Lab 6 : Primeros pasos con Terraform (IaC local con Docker)
Este proyecto utiliza workspaces para gestionar distintos entornos de despliegue:
- 🧑💻
dev→ entorno de desarrollo - 🧪
srg→ entorno de staging o preproducción - 🚀
prod→ entorno de producción
Cada workspace mantiene su propio estado independiente, ubicado en terraform.tfstate.d/<workspace>/.
Antes de comenzar, inicializa Terraform en el proyecto:
terraform initLos workspaces permiten tener múltiples entornos aislados dentro del mismo proyecto de Terraform.
Cada workspace mantiene su propio estado de infraestructura, evitando conflictos entre entornos como desarrollo, pruebas y producción.
Por ejemplo, puedes desplegar los mismos contenedores o recursos Docker en tres entornos distintos (dev, srg, prod), sin que se afecten entre sí.
Crea los tres entornos principales (solo es necesario hacerlo una vez):
terraform workspace new dev
terraform workspace new srg
terraform workspace new prodTerraform permite listar fácilmente todos los workspaces creados en el proyecto.
Esto es útil para verificar en qué entorno estás trabajando antes de ejecutar comandos como plan o apply.
Ejecuta el siguiente comando:
terraform workspace list default
* dev
srg
prodEl asterisco (*) indica el workspace activo.
Para cambiar entre entornos (por ejemplo, de dev a srg o prod), usa el siguiente comando:
terraform workspace select <nombre_workspace>Puedes verificar el cambio con:
terraform workspace showGenera el plan de ejecución para el entorno actual (cargando su archivo de variables):
terraform plan -var-file="$(terraform workspace show).tfvars"Si estás en srg, Terraform usará automáticamente srg.tfvars.
Ejecuta los cambios en el entorno activo:
terraform apply -var-file="$(terraform workspace show).tfvars"También puedes aplicar directamente sin confirmación:
terraform apply -auto-approve -var-file="$(terraform workspace show).tfvars"Primero cambia a otro (por ejemplo default).
terraform workspace select default
terraform workspace delete devRepite para srg o prod si lo necesitas:
terraform workspace delete srg
terraform workspace delete prod