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.

Creación y cambio de Workspaces

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

Uso de Workspaces en la configuración de Terraform

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.

Interacción entre Workspaces y el estado

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.

Consideraciones y buenas prácticas

Es fundamental tener en cuenta algunas buenas prácticas al utilizar workspaces en Terraform:

  • Nombrar los workspaces de manera consistente y clara, representando los distintos entornos (por ejemplo, 'dev', 'testing', 'staging', 'prod').
  • No utilizar workspaces para gestionar aislamiento entre componentes no relacionados de una solución o diferentes soluciones. En su lugar, utilizar módulos y configuraciones separadas.
  • Asegurarse de sincronizar los 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.

¿Te gusta el contenido de esta píldora de conocimiento?

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