Revista 100% Verde

Primeros pasos con Terraform

Por Soloelectronicos @soloelectronico

Desde hace un tiempo se oye hablar mucho de DevOps, una fusión que combina las áreas de Desarrollo,Operaciones y Control de calidad

Es una extensión natural de metodologías Agile y es habitual el uso de los principios CAMS, cuyas siglas vienen de:

  • Cultura relacionada con comunicación humana, procesos y herramientas
  • Automatización de procesos
  • Monitorización
  • Sharing feedback, buenas prácticas y conocimiento

En DevOps son habituales las prácticas siguientes:

  • Planificación ágil
  • Despliegue continuo (CI/CD). La subida de cambios al repositorio de código desencadena la ejecución de pruebas automatizadas que finalmente realizan el despliegue de los cambios tras superarse las pruebas.
  • Infraestructura como código (Infrastructure as Code). Se trata del desarrollo de scripts para las tareas de despliegue y gestión de la infraestructura
  • Contenedorización. Combinada con la Infraestructura como código permite el despliegue instantáneo de aplicaciones en contenedores.
  • Microservicios. Facilita el aislamiento de problemas y maximiza la producción
  • Infraestructura cloud. Favorece la disponibilidad y la automatización.

En este post vamos a ver Terraform, una herramienta para construir, modificar y versionar infraestructura de forma segura y eficiente.

es una herramienta de orquestación de código abierto desarrollado por Hashicorp que nos permite definir nuestra infraestructura como código, esto quiere decir que es posible escribir en un fichero de texto la definición de nuestra infraestructura usando un lenguaje de programación declarativo y simple.

Terraform tiene soporte para una gran cantidad de proveedores de infraestructura local o en la nube, Amazon Web Services (AWS), Digital Ocean, Microsoft Azure, VMware vSphere, son ejemplos de proveedores de servicios. Puedes ver todos los proveedores soportados en la documentación de Terraform.

Estos proveedores de nube cuentan con sus propias herramientas de infraestructura como código, por ejemplo algunos de ellos como Amazon AWS que tiene a CloudFormation que solo soporta la infraestructura en Amazon, OpenStack tiene Heat, Azure tiene Resource Manager, pero Terraform no está cerrado a un proveedor en específico, puede trabajar con todos ellos e incluso de forma simultánea sin ningún inconveniente.

Instalación en sistema operativo Windows

La instalación de Terraform es muy sencilla. Se descarga como un binario que hay que descomprimir y luego se coloca en un directorio incluido en el PATH del sistema y. Probamos su funcionamiento desde la terminal con terraform donde a encontramos el ejecutable.

Bueno, estos son los pasos a seguir para instalar Terraform en ambiente Windows:

Nos iremos a la página oficial https://www.terraform.io/downloads.html.

Primeros pasos con Terraform

Seleccionamos el sistema operativo y la arquitectura, en nuestro caso elegiremos Windows 64­bit puesto que lo instalaremos en una maquina Windows 10.

Primeros pasos con Terraform

Creamos un directorio para el ejecutable de Terraform,copiamos el fichero descargado anteriormente al directorio terraform y nos situamos en el directorio terraform.,Justo entonces descomprimimos el ejecutable ( necesitaremos el winzip instlado ) en el interior del directorio creado anteriormente.

Ahora vamos a añadir la variable de entorno de Terraform para el usuario, para ello en el de cortana buscamos "Configuracion avanzada del sistema " y pinchamos en este . A continuacion pulsamos en Variables de entorno

Primeros pasos con Terraform

En la siguiente pantalla pulsamos el botón Nueva.

Asignamos un nombre a la variable y en el botón Examinar archiv o buscamos la ruta del ejecutable de Terraform.

Primeros pasos con Terraform

Ahora desde una ventana de símbolo de sistema comprobamos que Terraform funciona escribiendo terraform -v.

Primeros pasos con Terraform

NOTA: En el caso de usar Linux seguiriamos unos pasos similares: Seleccionamos desde la pagina de descargas de Terraform el sistema operativo y la arquitectura, ( normalmente Linux 64­bit puesto si por ejemplo lo instalasemos en una maquina Debian jessie) .Creamos un directorio para los binarios de Terraform y moveremos el fichero descargado anteriormente al interior de la carpeta.Nos situamos en el directorio terraform,descomprimimos los binarios de Terraform con el comando unzip.Finalmente exportamos las variables de entorno de Terraform con el comando export PATH=/home/usuario/terraform:$PATH y comprobamos que se ha instalado bien ejecutando terraform -version.

Sintaxis

Hashicorp usa su propio lenguaje de configuración para la descripción de la infraestructura.

Los archivos Terraform se pueden escribir en dos formatos:

NOTA: Para evitar introducir datos sensibles en los archivos de configuración y evitar que queden expuestos en el sistema de control de versiones es buena práctica configurar valores sensibles en variables de entorno.

El convenio de Terraform es que definamos en la shell las variables precedidas de TF_VAR_. Por ejemplo, definimos una variable de entorno TF_VAR_PASSWORD que será accedida por Terraform como PASSWORD.

  1. Cargar la variable en Terraform en el archivo variables.tf

    La variable de entorno TF_VAR_PASSWORD es reconocida en Terraform como PASSWORD

  2. Usar la variable en Terraform en el el archivo providers.tf

    provider "openstack" { user_name = var.openstack_user_name tenant_name = var.openstack_tenant_name password = var.PASSWORD auth_url = var.openstack_auth_url }

Idenpotencia

Una característica muy interesante de Terraform es l a idempotencia, así como la facilidad para aplicar cambios. Si volvemos a ejecutar un despliegue con terraform apply y no ha habido cambios en los archivos de configuración tras el último despliegue (cuyo estado quedó almacenado en el archivo .tfstate), el despliegue quedará intacto. Es decir, no se volverá a crear infraestructura repetida ni se reemplazará la infraestructura creada por una nueva si no hay cambios en los archivos de configuración.

Sin embargo, si modificamos la configuración modificando los archivos Terraform estaremos indicando un nuevo estado al que queremos llegar. En este caso, al aplicar terraform apply sí se desplegarán los cambios realizados en la configuración. Sin embargo, sólo se desplegarán los cambios, manteniendo intacta la configuración no modificada.

Como lanzar terraform

Dentro de cada carpeta de ejemplos ejecuta:

$ terraform init $ terraform apply 

Tras unos instantes se mostrarán las IPs asignadas a las máquinas virtuales creadas y aprovisionadas.

El comando terraform init creará una carpeta .terraform con en plugin de OpenStack instalado y disponible para ser usado en el proyecto.

Ejemplos para probar todo esto que hemos visto tanto en Open Stack como Google Cloud Platform se pueden encontar en https://github.com/ualmtorres/terraform-examples


Volver a la Portada de Logo Paperblog