DEV Community

Cover image for TF_IN_AUTOMATION le dice a Terraform: No hay humanos aquí
Afu Tse (Chainiz)
Afu Tse (Chainiz)

Posted on

TF_IN_AUTOMATION le dice a Terraform: No hay humanos aquí

¿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
Enter fullscreen mode Exit fullscreen mode

o en un pipeline:

env:
  TF_IN_AUTOMATION: "true"
Enter fullscreen mode Exit fullscreen mode

¿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
Enter fullscreen mode Exit fullscreen mode

Ejemplos:

GitHub Actions

- name: Terraform Apply
  env:
    TF_IN_AUTOMATION: "true"
  run: |
    terraform init
    terraform plan
    terraform apply -auto-approve
Enter fullscreen mode Exit fullscreen mode

Azure DevOps

variables:
  TF_IN_AUTOMATION: "true"

steps:
- script: |
    terraform init
    terraform plan
    terraform apply -auto-approve
  displayName: Terraform Apply
Enter fullscreen mode Exit fullscreen mode

¿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
Enter fullscreen mode Exit fullscreen mode

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)