StudyToCert

Terraform Associate / Lecciones · English

HashiCorp Certified: Terraform Associate Terraform Associate (004)

Qué es IaC: infraestructura definida en archivos legibles por máquina y bajo control de versiones, en lugar de cambios manuales en la consola

Infrastructure as Code (IaC, infraestructura como código) significa que describes servidores, redes, bases de datos, registros DNS y otra infraestructura en archivos de texto que una herramienta lee y ejecuta, en lugar de construirlos haciendo clic en la consola de una nube o escribiendo comandos sueltos. Los archivos son la fuente de verdad: si quieres un cambio, cambias el archivo y la herramienta hace que la realidad coincida con él.

Dos palabras de la definición cargan con la mayor parte del peso. Legible por máquina significa que un programa puede analizar el archivo y convertirlo en llamadas a una API sin que una persona lo interprete. Bajo control de versiones significa que los archivos viven en un sistema como Git, de modo que cada cambio tiene un autor, una marca de tiempo, un mensaje y un diff que puedes revisar o revertir. Una página de wiki que describe cómo se construyó un servidor es documentación; un archivo que una herramienta puede ejecutar para construir ese servidor es código.

Compáralo con el aprovisionamiento manual, a veces llamado ClickOps. Una ingeniera inicia sesión en una consola, crea una red virtual, elige un rango de subred, lanza una máquina virtual y abre un puerto en el firewall. Funciona, pero el conocimiento de qué se hizo exactamente vive en la memoria de esa ingeniera. Reconstruirlo en otra región, o explicarle a un auditor por qué hay un puerto abierto, implica rehacer los pasos a mano. Entre entornos se cuelan pequeñas diferencias, un problema conocido como configuration drift (deriva de configuración).

Con Terraform, los archivos de IaC se escriben en HashiCorp Configuration Language (HCL) y normalmente terminan en .tf. Un directorio de archivos .tf es una configuración. Escribes bloques que declaran lo que debe existir, ejecutas terraform plan para previsualizar lo que Terraform cambiaría y ejecutas terraform apply para hacer esos cambios mediante la API del proveedor. Terraform también mantiene un archivo de estado que registra qué objetos reales pertenecen a qué bloques, algo que estudiarás más adelante.

resource "local_file" "hello" {
  filename = "hello.txt"
  content  = "Managed by Terraform"
}

Este pequeño ejemplo usa el provider local para gestionar un archivo en tu propia máquina, lo cual es una buena forma de aprender el flujo de trabajo sin una cuenta en la nube. El mismo patrón, un tipo de recurso, un nombre y algunos argumentos, es el que usarías para declarar una máquina virtual en la nube o un registro DNS. Una vez que la infraestructura está en archivos, puede revisarse en pull requests, probarse en pipelines y recrearse cuando se necesite.

Términos clave

Infrastructure as Code (IaC, infraestructura como código)
Gestión de la infraestructura mediante archivos de definición legibles por máquina que una herramienta aplica, en lugar de cambios manuales.
Configuration (configuración)
En Terraform, el conjunto de archivos .tf de un directorio que en conjunto describen la infraestructura deseada.
HCL
HashiCorp Configuration Language, el lenguaje declarativo en el que se escriben las configuraciones de Terraform.
Configuration drift (deriva de configuración)
Diferencias que se acumulan entre entornos o entre el diseño registrado y la realidad, normalmente por cambios manuales no registrados.
ClickOps
Nombre informal para aprovisionar infraestructura a mano mediante una consola web.
Ejemplo real

Un equipo tiene un entorno de staging que alguien construyó a mano hace dos años. Cuando necesitan una segunda copia para pruebas de carga, nadie recuerda todos los ajustes. Después de describir el entorno en archivos de Terraform guardados en Git, crear una tercera copia es cuestión de ejecutar plan y apply con valores de variables diferentes.

Consejo para el examen: Las preguntas del examen definen IaC por sus propiedades: código guardado en control de versiones y aplicado por una herramienta. Si una respuesta describe documentar pasos manuales o automatizar clics en la consola sin una fuente de verdad, no es el beneficio de IaC por el que se pregunta.

Comprueba lo que sabes

¿Por qué un runbook que describe pasos en la consola no se considera Infrastructure as Code?

Porque una herramienta no puede ejecutarlo para producir la infraestructura; los archivos de IaC son legibles por máquina y se aplican automáticamente, así que el propio archivo es la fuente de verdad.

¿Qué problema resuelve guardar los archivos de IaC en control de versiones que los cambios manuales no resuelven?

Registra quién cambió qué, cuándo y por qué, permite revisar antes de aplicar los cambios y te deja volver a una versión conocida.

Estudia Terraform Associate gratis
Plan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.
Abrir el plan de estudio