Como dar los primeros pasos en la infraestructura como código

Como dar los primeros pasos en la infraestructura como código

Como os comentaba hace unas semanas en mi post, infraestructura como código una pieza más del puzzle devops, hoy en día disponemos de multitud de herramientas para automatizar el despliegue de infraestructura, ya sea en nuestro data center o en alguno de los principales proveedores de servicios cloud.

Una de las herramientas que más ruido está teniendo en el mercado, al menos desde mi experiencia, es Terraform de HashiCorp. Terraform que nació con un proyecto de código abierto ha conseguido evolucionar como compañía a lo que hoy conocemos como HashiCorp, que ha desarrollado multitud de productos complementarios a Terraform, que permiten realizar una gestión completa de la gestión de entornos IT, ya sea en la nube o en entornos tradicionales de data center.

Hasta el momento la gestión de infraestructura ha necesitado del despliegue de redes, servidores y almacenamiento mediante procesos cuya gestión y configuración necesitaban de herramientas heterogéneas. Permitiendo la automatización de parte de estos procesos mediante la creación de scripts o incluso manualmente. Afortunadamente herramientas como Terraform ofrecen alternativas sencillas y estructuradas para permitir la implementación de proyecto de IaaC (Infrastructure as a Code).

Terraform permite crear una descripción declarativa de la infraestructura a desplegar. Para ellos deberemos hacer uso del compilador de Terraform, este entorno codificado se convierte en un plan de ejecución, que junto con el proveedor de Terraform (en este caso me voy a centrar en el entorno que mejor conozco, OCI o Oracle Cloud Infrastructure) permite establecer una conexión con el entorno destino y ejecutar dicho plan.

Una de las ventajas de usar Terraform, es que nosotros como usuario de un servicio de tercero, nos aislamos de los prerrequisitos que se establecen en nuestro proveedor de cloud pública. Es decir, si para desplegar un servidor, antes necesitamos crear el entorno de red, Terraform nos evita tener que conocer todas las interdependencias entre los servicios a la hora de implementar nuestro proyecto.

Una de las funcionalidades diferenciales de Terraform frente a otros productos de IaaC, es que permite conocer y mantener el estado de nuestros proyectos, por lo que si eliminamos o agregamos recursos adicionales. Una vez que creemos una nueva versión de nuestro proyecto, a la hora de ejecutarlo nuevamente lo primero que hará Terraform es comprobar la infraestructura de destino, si ya disponemos de elementos creados entre diferentes versiones de nuestros proyectos, los respetará y lo único que hará es instalar desde cero los recursos adicionales agregados.

Pero como un paso hace el camino, ¿qué necesitas para empezar a trabajar?

Os dejo los elementos necesarios, a modo receta para poder crear tu primer proyecto de Terraform sobre OCI.

  • Un tenant o instancia de OCI
  • Disponer de las claves SSL (público y privada)
  • Ejecutable de Terraform instalado
  • Proyecto en formato código (.tf)
  • Proveedor de OCI Terraform

Por supuesto, también necesitaras un ordenador personal para ejecutar Terraform. Aquí el abanico que nos ofrece Terraform es amplio, ya que dispone de clientes para Linux, Mac o Windows con una shell bash disponible. Bastante fácil y nativo para correr en Linux y Mac, en Windows hay diversas opciones como son MobaXterm o Git Bash.

Además, tendrás que tener a mano los datos de tu subscripción de OCI.

Si no los tienes a mano es tan fácil como iniciar sesión en la consola de OCI y copiar la siguiente información de su cuenta.

  • Teant ID
  • User ID
  • Copartment ID

Acceso al API SSL Key

Para ello, necesitaras como te adelantaba anteriormente un par de claves SSL para poder habilitar al provider de Terraform y que se conecte a la API de OCI. Para crear un par de claves, una opción valida es el uso Putty Gen, después de este paso deberas subir la clave pública a tu cuenta de OCI.

Para poder ejecutar tu código, necesitaras tener instalado el ejecutable de Terraform. Os dejo un post fenomenal de Vasos Koupparis, donde viene perfectamente detallado.

A la hora de crear nuestro código con Terraform, hay diferentes opciones para recuperar la información del identificador que recopilamos en el código, pero la más común es mediante el uso de variables de entorno.
Una vez creado el proyecto, será necesario ejecutarlo, para ello hemos de inicializar terraform mediante el comando terraform init, mientras que con el comando terraform -version podrás comprobar la versión instalada.

El resto de los comandos que podemos ejecutar desde el proveedor, una vez codificado el proyecto, son tan sencillos como:

  • Terraform plan, que te permite validar que el plan una vez que se aplique funcionara
  • Terraform apply, ejecuta el plan y desplega la infraestructura codificada para dicho proyecto
  • Terraform destroy, por último, el comando destroy eliminará todos los recursos recogidos en el plan

Como has podido comprobar, Terraform es una herramienta muy útil para automatizar e iterar en despliegues de infraestructura. Sobre todo, en aquellos en los que hay tareas muy repetitivas que permiten reducir los tiempos de entrega, eliminar errores, permitir despliegues granulares de infraestructura y modulares, para habilitar diferentes etapas o versiones de aplicaciones.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *