¿Qué es TF_IN_AUTOMATION?
Para entender, TF_IN_AUTOMATION es una variable de entorno que Terraform usa para saber si se está ejecutando en un entorno automatizado, como:
- CI/CD (GitHub Actions, GitLab CI, Azure DevOps, Jenkins)
- Pipelines corporativos
- Scripts no interactivos
export TF_IN_AUTOMATION=true
o en un pipeline:
env:
TF_IN_AUTOMATION: "true"
¿Para qué sirve realmente?
Cuando TF_IN_AUTOMATION=true, Terraform cambia su comportamiento para ser más amigable con la automatización.
1. Menos salida “humana”, más salida “máquina”
Terraform:
- Reduce mensajes decorativos
- Evita prompts innecesarios
- Da logs más predecibles
Ideal para logs de pipelines.
2. Desactiva mensajes interactivos
Terraform asume que no hay una persona sentada frente a la consola.
Ejemplo:
- No te va a sugerir comandos
- No muestra mensajes tipo “Next steps”
Esto evita que un pipeline:
- Se quede colgado esperando input
- Genere ruido en los logs
3. Comportamiento esperado en CI/CD
Terraform no falla ni pregunta cosas inesperadas.
Ojo: Esto NO reemplaza
terraform apply -auto-approve
Ejemplos:
GitHub Actions
- name: Terraform Apply
env:
TF_IN_AUTOMATION: "true"
run: |
terraform init
terraform plan
terraform apply -auto-approve
Azure DevOps
variables:
TF_IN_AUTOMATION: "true"
steps:
- script: |
terraform init
terraform plan
terraform apply -auto-approve
displayName: Terraform Apply
¿Qué NO hace TF_IN_AUTOMATION?
Esto es importante:
❌ No cambia el plan
❌ No evita errores
❌ No mejora performance
❌ No maneja state
❌ No reemplaza -input=false
Si quieres full non-interactive, normalmente usas:
terraform plan -input=false
terraform apply -auto-approve -input=false
Buenas prácticas
✅ Siempre setearlo en CI/CD
✅ No usarlo en local (no aporta nada)
✅ Combinarlo con:
- -input=false
- -auto-approve
- Backends remotos (S3 + DynamoDB, GCS, Azure RM)
- Variables vía TF_VAR_*
Conclusión
TF_IN_AUTOMATION le dice a Terraform:
“No hay humanos aquí, compórtate como una herramienta de automatización”
Top comments (0)