Terraform es una herramienta poderosa para la gestión de infraestructura como código, y uno de sus componentes clave son los Workspaces. Los Workspaces permiten gestionar múltiples entornos desde un único conjunto de configuraciones de Terraform. Esto es especialmente útil para separar entornos como desarrollo, y producción, asegurando que los recursos de cada entorno no interfieran entre sí.
Por defecto, Terraform opera en el workspace 'default'. Sin embargo, es posible crear y gestionar múltiples workspaces para diferenciar entornos o propósitos específicos.
Para crear un nuevo workspace, se utiliza el comando terraform workspace new
. Por ejemplo, para crear un workspace llamado 'dev':
terraform workspace new dev
Si ya existe ese workspace, Terraform cambiará a ese workspace en lugar de crearlo de nuevo. Para verificar qué workspaces existen y cuál es el actual, puede usar:
terraform workspace list
El comando indicará con un asterisco (*) el workspace actual. Para cambiar de workspace, se usa:
terraform workspace select dev
Al trabajar con múltiples workspaces, es común necesitar usar valores específicos según el entorno. Una práctica común es definir variables que cambien de acuerdo al workspace. Por ejemplo, en un archivo terraform.tfvars
:
variable_aws_region {
default = "us-west-2"
}
variable_environment {
default = "default"
}
locals {
environment_based_values = {
dev = "us-west-1"
prod = "us-east-1"
}
selected_region = lookup(local.environment_based_values, terraform.workspace, var.aws_region)
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-${terraform.workspace}"
}
}
En este ejemplo, el valor de local.selected_region
depende del workspace actual. Así, un workspace 'dev' usará 'us-west-1', mientras que el workspace por defecto utilizará 'us-west-2'. Además, el recurso aws_instance.example
incorporará el nombre del workspace en la etiqueta del recurso.
El estado de Terraform es específico de cada workspace. Esto significa que cada workspace tiene su propio archivo de estado y, por lo tanto, su propia representación de los recursos gestionados por Terraform. Este aislamiento garantiza que cambios en un workspace no afecten a los recursos de otro.
Para ejemplificar, si existiera un recurso en el workspace 'dev' y cambiamos al workspace 'prod', Terraform no verá ni gestionará el recurso del workspace 'dev'. Esto permite realizar experimentos o cambios sin riesgo para los otros entornos.
Es fundamental tener en cuenta algunas buenas prácticas al utilizar workspaces en Terraform:
backends
para los estados de los workspaces en sistemas centralizados (como S3 para AWS) para mantenerlos seguros y accesibles.En resumen, los workspaces de Terraform son una herramienta valiosa para gestionar múltiples entornos desde una única configuración de Terraform, proporcionando aislamiento y organización limpia del estado y los recursos asociados.
Esta píldora formativa está extraída del Curso online de Fundamentos de Terraform con AWS: automatización y eficiencia en la nube.
No pierdas tu oportunidad y ¡continúa aprendiendo!
Política de privacidad
ADR Formación utiliza cookies propias y de terceros para fines analíticos anónimos, guardar las preferencias que selecciones y para el funcionamiento general de la página.
Puedes aceptar todas las cookies pulsando el botón "Aceptar" o configurarlas o rechazar su uso pulsando el botón "Configurar".
Puedes obtener más información y volver a configurar tus preferencias en cualquier momento en la Política de cookies