Contenido del curso

Módulos en Terraform

El archivo tfstate que Terraform no cifra

Resumen

Cada vez que despliegas, eliminas o actualizas recursos en Azure con Terraform, existe un archivo que registra cada movimiento como una bitácora silenciosa. Ese archivo se llama terraform.tfstate y es la pieza que le permite a Terraform saber qué existe, qué cambió y qué necesita reconciliar en tu infraestructura.

Qué es el estado de Terraform y por qué importa

El estado en Terraform es el historial vivo de tu infraestructura. Funciona como una bitácora en formato JSON que guarda cada recurso desplegado, sus identificadores, ubicaciones, nombres y configuraciones específicas.

Cuando abres el archivo terraform.tfstate desde Visual Studio Code [0:55], encuentras bloques que describen cada componente: un recurso de Azure CAF con su descripción y nombre de storage, un grupo de recursos con su ubicación e ID, y así sucesivamente. Es decir, Terraform mantiene una fotografía estructurada de todo lo que hay desplegado en la nube.

¿Para qué sirve el archivo tfstate? Sirve como registro de los recursos que Terraform ha creado, modificado o eliminado. Le permite al motor comparar lo que existe en la nube contra lo que defines en tu código y aplicar solo los cambios necesarios.

Por qué el tfstate es un archivo sensible

Aquí viene lo interesante: el archivo no está cifrado. Si te desplazas dentro del JSON hasta el bloque de Azure Storage Account [1:45], vas a encontrar las llaves de acceso, cadenas de conexión y endpoints completamente explícitos.

Esto significa que cualquier persona que obtenga el archivo puede acceder a tu cuenta de almacenamiento sin restricciones. Por eso la primera buena práctica es bloquear su salida hacia repositorios públicos o privados.

  • Agrega la extensión .tfstate al archivo .gitignore para que nunca llegue a tu control de versiones.
  • Mantén el archivo solo en tu entorno local mientras trabajas individualmente.
  • Evita compartirlo por canales no cifrados como correo o chats.

Cómo manipular el estado al modificar tu archivo main.tf

El estado se actualiza automáticamente según cómo edites tu archivo principal. Puedes probarlo comentando bloques de código y observando cómo Terraform reacciona.

En Terraform tienes dos formas de comentar:

  • Usa el signo # al inicio de una línea para comentarios de una sola línea.
  • Usa /* */ para comentar bloques completos de código.

Si en tu archivo main.tf comentas el bloque de la cuenta de almacenamiento y también el de outputs relacionado [3:55], y luego ejecutas terraform plan, vas a ver cómo Terraform refresca el estado para comparar lo que tiene registrado contra lo que ahora aparece en el código.

Qué pasa al ejecutar terraform plan y terraform apply

El comando terraform plan detecta que dos bloques desaparecieron del archivo principal y anuncia que esos recursos serán destruidos. Cuando confirmas con terraform apply, Azure elimina la cuenta de almacenamiento y el nombre asociado [5:00], y el archivo tfstate se actualiza casi en tiempo real para reflejar solo lo que sigue vigente.

Es interesante ver que durante la ejecución, Visual Studio alcanza a mostrar por medio segundo cómo el archivo cambia y queda únicamente con el grupo de recursos y el Azure CAF name que sobrevivieron al cambio.

¿Qué hace terraform apply con el estado? Aplica los cambios definidos en tu código a la infraestructura real y luego sincroniza el archivo tfstate para que coincida con el resultado final desplegado.

Cómo se sincroniza el estado con tu infraestructura real

La lógica detrás del estado es simple pero poderosa. Terraform compara tres cosas: lo que está en tu archivo main.tf, lo que registra el tfstate y lo que existe realmente en Azure. A partir de esa comparación decide qué crear, qué actualizar y qué destruir.

Esto te da control fino sobre tu infraestructura solo manipulando el código:

  1. Agregar un bloque nuevo provoca que Terraform lo cree y lo registre en el estado.
  2. Comentar o eliminar un bloque hace que Terraform destruya el recurso y lo borre del estado.
  3. Modificar atributos dentro de un bloque genera actualizaciones que también quedan reflejadas.

Cada ejercicio que realices tendrá su propio archivo tfstate dentro de su carpeta, lo que mantiene aislados los registros de cada proyecto.

Qué limitación tiene trabajar con el estado en local

Mientras tú seas la única persona desplegando infraestructura, mantener el tfstate en tu máquina funciona bien. El problema aparece cuando un equipo completo necesita colaborar sobre la misma infraestructura: cada quien tendría una versión distinta del estado y los conflictos serían inevitables.

La pregunta que abre el siguiente paso es cómo compartir ese archivo de manera segura entre varios miembros del equipo sin exponer las llaves ni perder el historial. ¿Tú cómo gestionas el estado de Terraform en tus proyectos? Cuéntame en los comentarios.