Configuración y scripts de Terraform
En esta unidad, veremos la configuración y los scripts de Terraform.
¿Por qué Terraform?
Como administrador de infraestructuras, necesita una herramienta para aprovisionar y administrar la infraestructura de Azure. También podrá usar la infraestructura como código en los archivos de configuración en los que se describe la topología de los recursos de Azure.
HashiCorp Terraform es una herramienta excelente para implementar infraestructura en varios proveedores de nube. Ofrece a los desarrolladores herramientas coherentes para administrar cada definición de infraestructura.
Automatización de la administración de la infraestructura
Mediante el uso de archivos de configuración de Terraform basados en plantilla, puede definir, aprovisionar y configurar los recursos de Azure de manera repetible y predecible. Esta automatización ofrece varias ventajas:
- Disminuye el potencial de errores humanos porque implementa y administra la infraestructura.
- Implementa la misma plantilla varias veces para crear entornos de desarrollo, prueba y producción idénticos.
- Reduce el costo de los entornos de desarrollo y prueba al crearlos a petición.
Comprensión de los cambios de infraestructura antes de aplicarlos
A medida que una topología de recursos se vuelve cada vez más compleja, también puede ser difícil entender qué significan los cambios de infraestructura y el efecto que tienen.
Con Terraform, puede validar los cambios de infraestructura y obtener una vista previa de ellos antes de aplicarlos. Los miembros del equipo pueden colaborar de forma más eficaz al comprender los cambios propuestos y el efecto que tienen al inicio del proceso de desarrollo.
Archivos de configuración de Terraform
Los archivos de configuración generan un plan de ejecución y lo que hará el plan para alcanzar el estado deseado. De ese modo, Terraform puede compilar la infraestructura descrita. A medida que cambia la configuración, Terraform puede determinar qué ha cambiado y crear planes de ejecución incremental.
Los archivos de configuración de Terraform usan su propio lenguaje de configuración, similar a YAML, que está diseñado para permitir una descripción de la infraestructura.
Los archivos de configuración se crean mediante la sintaxis de HashiCorp Configuration Language (HCL). HCL es un lenguaje declarativo, que describe un objetivo previsto en lugar de los pasos para alcanzar ese objetivo. La sintaxis de HCL le permite especificar el proveedor de nube, como Azure, y los elementos que componen la infraestructura en la nube.
Los archivos de configuración se almacenan como archivos de texto sin formato con una extensión .tf. Son las siguientes:
- main.tf: (obligatorio) define la estructura principal, e implementa la infraestructura completa de manera directa o mediante llamadas a módulos.
- outputs.tf: identifica cada valor devuelto de un módulo de Terraform.
- variables.tf: define las variables de main.tf, tanto si son necesarias como si no.
Módulos
Los recursos de Terraform se pueden agrupar en un módulo, lo que crea una unidad de configuración más grande. Estos módulos son conjuntos de archivos de configuración que se almacenan en un directorio único. Una configuración simple consta de un solo directorio con uno o varios archivos .tf.
Los módulos ofrecen muchas ventajas, por ejemplo:
- Lo ayudan a organizar un proyecto.
- Encapsulan la complejidad.
- Permiten volver a usar tareas comunes.
- Proporcionan coherencia y garantizan que sigue los procedimientos recomendados.
El archivo main.tf
El archivo main.tf contiene el conjunto principal de detalles de configuración del módulo. Este archivo se denomina a menudo plan de Terraform. El plan de Terraform especifica los recursos de infraestructura que necesita. Puede asignar el nombre que quiera a este archivo, pero suele denominarse main.tf.
Flujo de trabajo de Terraform
Terraform recomienda su flujo de trabajo principal de "inicialización, planeamiento y aplicación" para la automatización. Este flujo de trabajo ejecuta todas las acciones de CI/CD de Terraform en las solicitudes de incorporación de cambios de Git nuevas y actualizadas.
Estas son las acciones principales para este flujo de trabajo:
- Init: inicializa un directorio de trabajo con los archivos de configuración de Terraform.
- Plan: crea un plan para cambiar los recursos de forma que coincidan con la configuración actual.
- Apply: aplica los cambios descritos por el plan.
Estado
El estado permite que Terraform sepa qué recursos de Azure agregar, actualizar o eliminar.
Terraform usa el estado para crear planes y realizar cambios en la infraestructura. Antes de cualquier operación, Terraform realiza una actualización para poner al día el estado con la infraestructura real.
De manera predeterminada, el estado se almacena en un archivo de texto local denominado terraform.tfstate. Terraform administra este archivo mediante las acciones de flujo de trabajo que se definen en los módulos.
También puede almacenar el estado de manera remota, un enfoque que funciona mejor en un entorno de equipo. Para más información sobre cómo administrar el estado de manera remota, consulte la unidad Resumen al final de este módulo.
Pasos siguientes
En la unidad siguiente hablaremos sobre el uso de Terraform con Acciones de GitHub o Azure Pipelines para aprovisionar e implementar sus aplicaciones.