
IaC, un paso más.
La “Infraestructura como Código” o IaC, por sus siglas en inglés (Infrastructure as Code), es
el nombre del nuevo paradigma de gestión de infraestructuras de proyectos tecnológicos.
Se trata de un método de programación que permite implementar y mantener infraestructura
mediante código fuente sin necesidad de utilizar la interfaz gráfica provista por las distintas
herramientas, significando por tanto, un concepto disruptivo cuyo objetivo es eliminar los
límites entre el desarrollo de aplicaciones y su puesta en marcha en diferentes entornos
productivos y no productivos, y con ello también las separaciones entre los equipos de
desarrollo, arquitectura y operaciones.
Más allá de un concepto tan simple como la representación de una infraestructura por
medio de un lenguaje de programación, este paradigma implica:
- Un aporte a la filosofía DevOps de los equipos corporativos, que facilita, además de
la automatización de pruebas e implementaciones de software, el despliegue
automatizado y ordenado de la infraestructura asociada a esas aplicaciones.
- Un entorno centralizado de administración de la configuración de la
infraestructura que soporta un aplicativo, en lugar de gestionar los servicios
asociados por separado y manualmente.
- Una forma más sencilla y eficaz de entender toda la infraestructura de un proyecto.
- La posibilidad de tener un registro de los cambios realizados en la infraestructura
del proyecto, si lo gestionamos mediante alguna herramienta de control de versiones
como Git o BitBucket.
- Mayor control entre los entornos de pruebas y producción. Al tratarse de una
representación en código, es más fácil garantizar que la configuración de la
infraestructura de cada entorno sea similar, disminuyendo así el margen de error en
el ciclo de puesta en producción.
Además de esto, la Infraestructura como Código, es compatible con IaaS (Infrastructure As
A Code), permitiendo que se puedan desplegar y gestionar las redes y máquinas virtuales
programáticamente, ya sea para cambiar la configuración de uno o más recursos
simultáneamente, o para desplegar nuevos. Lo mismo ocurre con otras soluciones de PaaS
y SaaS dispuestas por los Cloud Providers.
IaC con Terraform
En función del Cloud Provider seleccionado para la infraestructura del proyecto, se pueden
encontrar soluciones diversas, como CloudFormation de AWS o Azure ARM de Azure, pero
también han ido surgiendo nuevas herramientas desde el nacimiento del IaaS, como el caso
de Puppet y Chef, que establecieron una nueva categoría de herramienta de automatización
de infraestructura que ha sido ampliamente utilizada.
Terraform, creada por HashiCorp, nació como una solución con lenguaje propio para
representar infraestructuras con modelos de IaC agnósticos del Cloud Provider utilizado,
pudiendo a la vez utilizar varios recursos o servicios de distintos proveedores dentro de la
misma arquitectura. Su lenguaje de programación, HCL (HashiCorp Configuration
Language), proporciona la sintaxis para la definición de la infraestructura y definición de los
proveedores requeridos.
Esto permite desplegar y gestionar los recursos atendiendo a las necesidades del proyecto
pudiendo utilizar diversos servicios independientemente de su proveedor, dentro del mismo
plan de ejecución.
Para profundizar sobre cómo desplegar infraestructura usando Terraform, puedes visitar
https://www.terraform.io/docs/index.html