En Iguana solutions, la cultura DevOps forma parte de cualquier miembro del Equipo Técnico. Cuando necesitamos implementar una infraestructura cloud , queremos utilizar herramientas "Infra as Code" para facilitar su despliegue y formar parte de nuestros pipelines CI/CD. En nuestro caso, decidimos utilizar una de las herramientas más utilizadas: Terraform.
Terraform desarrollada desde hace 5 años por Hashicorp. Esta herramienta de código abierto viene con un amplio conjunto de proveedores utilizados para
- Implemente la infraestructura en Cloud público o en cloud privado comúnstack como OpenStack o VMware,
- Gestionar aplicaciones SaaS como Gitlab (creación de proyectos o grupos, por ejemplo),
- Gestionar recursos en proveedores de CDN como Cloudflare
Cuando desplegamos infraestructura en un Proveedor Público Cloud ya usamos Terraform, cuando necesitamos desplegar en IG1 cloud también queremos usarlo. IG1 Cloud utiliza OpenNebula para orquestar clusters de nodos KVM y almacenamiento. Desafortunadamente para nosotros, todavía no existe un proveedor oficial de Terraform para OpenNebula.
Es por eso que decidimos cavar en github.com para comprobar si alguien iniciar un proveedor para gestionar un OpenNebula Cluster con Terraform. ¿Adivináis qué? Encontramos un proyecto iniciado por Runtastic y mejorado por Blackberry. Pero estos dos proyectos son antiguos, no están bien mantenidos y se basan en una versión antigua de OpenNebula.
Desde entonces, OpenNebula tiene una API GO, llamada "Goca" y como los proveedores de Terraform deben escribirse en Golang, decidimos desarrollar nuestro propio proveedor basado en Goca.
Como uno de los colaboradores de Goca, OpenNebula nos preguntó, hace unas semanas, si queríamos presentar nuestro proveedor como oficial. Ese email nos llenó de orgullo y nos hizo mucha ilusión responder que sí a OpenNebula. Desde entonces, nuestro proveedor ha sido añadido como un complemento de OpenNebula en OpenNebula Github. Las contribuciones son bienvenidas
Hoy podemos escribir archivos de texto utilizando HCL, HashiCorp Configuración Languaje, sintaxis. HCL es un DSL (Domain specific language) cercano a la sintaxis JSON y desarrollado por Hashicorp. Estos archivos describen la infraestructura que se desplegará en varias nubes. En un único archivo Terraform , utilizamos varios proveedores para desplegar infraestructura en un entorno multicloud con un simple comando terraform aplicar en la línea de comandos.