Terraform 101: una guía para principiantes para los amantes de las plantillas ARM

Hoy vamos a hacer un viaje al mundo Terraform.
Este artículo explicará cómo funciona Terraform y cómo puede ayudarnos a administrar nuestros recursos de infraestructura en Azure (y otras plataformas / productos) utilizando su HLC (lenguaje de configuración HashiCorp). Este humilde autor ha estado usando plantillas ARM durante varios años. El objetivo es presentarle Terraform y empezar a escribir su primer código. Como parte de los primeros pasos de este viaje, exploraremos algunas de las características interesantes de este producto.

Preparando su escritorio para usar Terraform

Vamos a mantenerlo simple trabajando localmente. En artículos futuros, exploraremos una forma más colaborativa al tener el control del código fuente y las soluciones corporativas proporcionadas por HashiCorp.

Para comenzar bien con Terraform, debemos asegurarnos de tener Visual Studio Code, Azure CLI y Terraform instalados en su escritorio. Escribí un artículo aquí en TechGenix que presenta la instalación de Visual Studio Code y la integración con Azure DevOps. Lo puedes encontrar aquí.

Después de tener instalado Visual Studio Code, asegúrese de que la extensión HashiCorp Terraform esté instalada. Hay dos versiones disponibles en Marketplace, y son creadas por Terraform y Microsoft.

terraformar

Nuestro siguiente requisito es tener la CLI de Azure instalada en su escritorio o servidor para administrar su Azure. Puedes descargarlo aquí.

Si le gusta PowerShell tanto como a mí, puede guardar el proceso de verificación del enlace y ejecutar el siguiente cmdlet:

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .AzureCLI.msi

El último paso para preparar nuestra estación de trabajo es instalar Terraform, un simple archivo exe que debe colocarse en una carpeta que ya está definida en el SENDERO ser accesible desde cualquier lugar. Se puede encontrar la última versión del ejecutable de Terraform aquí.

La descarga es un archivo zip. En mi caso, lo acabo de colocar en Windows System32, como se muestra en la imagen a continuación.

terraformar

Esas son las herramientas básicas que necesita para comenzar a usar Terraform localmente y realizar las primeras implementaciones en Microsoft Azure (o cualquier otra nube, para el caso).

Tenga en cuenta que todas las herramientas descritas en esta sección se pueden instalar en la plataforma que elija: Windows, Linux o macOS.

Conceptos básicos de Terraform

Al usarlo localmente en su escritorio para probar o construir una solución con un equipo, Terraform tendrá principalmente cuatro conmutadores con los que debe familiarizarse antes de aprender el idioma y escribir su primer código. Son: iniciar, planificar, aplicar y destruir.

Cuando usas terraform init comando, estamos inicializando el directorio actual basado en los archivos de configuración existentes de Terraform (archivos * .tf). Este comando inicializará los backends necesarios, copiará los módulos y los complementos.

El escenario ideal es ejecutar este después de definir su código. Sin embargo, no hay nada de malo en ejecutar este comando varias veces, y si Terraform detecta que es necesario ejecutarlo, se le pedirá que lo haga.

En el siguiente ejemplo, nuestro código usa el proveedor AzureRM y, al ejecutar init, el complemento se descargó en una estructura de carpetas local en el directorio de trabajo actual (C: Lab Terraform app110).

El segundo comando que usaremos con más frecuencia es plan de terraform. Este comando comparará lo que hemos definido en los archivos de configuración con la infraestructura real, y proporcionará un resumen de los cambios necesarios para lograr el estado deseado.

Es importante mencionar que este comando no es intrusivo de ninguna forma y no cambiará la infraestructura real. El comando puede usar parámetros (-out PlanName) para guardar el plan en un archivo como un artefacto que se puede usar con el siguiente comando de Terraform para aplicar esa configuración definida específica a la infraestructura de destino.

En el siguiente ejemplo, podemos ver el plan de Terraform solicitando los valores requeridos y proporcionando la salida de nuestro código (definido en el área de salida y excelente para la resolución de problemas) y si se esperan cambios (adiciones, cambios o incluso eliminaciones).

El tercer comando es terraform aplicar, y este es el que hará cambios en la infraestructura del mundo real. Podemos pasar un plan generado previamente como parámetro, y si no lo pasamos, el comando usará la configuración actual y generará un plan sobre la marcha y solicitará aprobación.

Todos los cambios documentados en el plan se pondrán en marcha en su infraestructura. En el ejemplo anterior, no hemos aprobado ningún plan, por lo que se requirió confirmación.

El comando adicional que puede resultar útil es terraform destruir, y este destruirá todo lo que se haya configurado previamente con Terraform.

El pequeño problema de ejecutarlo es que eliminará todo lo definido en los archivos de configuración. Una mejor manera de ver el impacto de destruir es usar terraform plan -destruir . Este evaluará el daño que se producirá si se utiliza la destrucción de terraform en el escenario actual.

Lo bueno, lo malo y lo feo

Esta sección refleja mi opinión sobre Terraform para administrar Azure. Terraform se está utilizando para corporaciones más grandes, y el uso de infraestructura como código (IaC) siempre es mejor que los procesos y scripts manuales; no hay lugar para la discusión aquí.

Lo bueno: Terraform tiene varios proveedores que permiten una fácil integración con otros productos, lo que lo hace atractivo en el mundo empresarial. También proporcionan la nube Terraform y algunas herramientas corporativas como Sentinel para evaluar y aumentar la seguridad y la gobernanza como parte del proceso incluso antes de implementar la infraestructura.

Lo malo: es un lenguaje para implementar cosas en Azure (o en diferentes nubes y plataformas), pero no tienes esa experiencia con la plataforma en sí. Por ejemplo, crear una cuenta de almacenamiento en ARM le ayuda a comprender cómo funciona Azure en segundo plano. Siempre puede exportar la plantilla y verla de primera mano y aplicar los cambios. Terraform no proporciona esa sensación (al menos para mí). Tenemos su documentación y comunidad para apoyarte, pero no es lo mismo.

Lo feo: está utilizando un proveedor diferente para respaldar sus esfuerzos de IaC. Con ARM, puede abrir tickets fácilmente con Microsoft, consultar el Portal de Azure y tener un código similar para comparar. Terraform es una abstracción completa de código para implementar en Azure. Aunque tiene algunas ventajas para administrar diferentes plataformas, al final del día, está atascado con Terraform y sus limitaciones (Azure es solo un proveedor en su ecosistema). Su curva de aprendizaje en el producto que está usando Terraform para administrar (Azure, en este ejemplo) será más corta que con herramientas nativas.

Microsoft está trabajando en un nuevo lenguaje similar a Terraform para implementar recursos en Azure. El nombre es Bicep, y puedes encontrar más información. aquí.

Imagen destacada: HashiCorp


Vistas de publicaciones:
76


About the Author

Leave a Reply

Your email address will not be published. Required fields are marked *