¿Qué es Terraform y por qué es genial?
Publicado: 2024-03-12La gestión de la configuración es la parte esencial de la metodología DevOps y herramientas como Ansible, Chef, Puppet, Terraform o SaltStack están en el corazón de los ecosistemas de desarrollo de software.
Terraform es el ejemplo de la próxima generación de sistemas de orquestación de configuración que aportan una nueva capa de características y funcionalidades. Echemos un vistazo a qué es Terraform y por qué es genial.
Terraform es la herramienta de orquestación de configuración que funciona con cualquier nube, ya sea privada local o sistema público, y permite un diseño, gestión y mejora seguros y convenientes para la infraestructura como código. Como parte de la pila de Hashicorp, que incluye también Vagrant, Packer, Consul, Vault y Nomad, Terraform ayuda a aprovisionar cualquier aplicación escrita en cualquier idioma para cualquier infraestructura.
Estos son los beneficios de usar Terraform en lugar de Ansible, Chef, Puppet o SaltStack:
- Orquestación, no simplemente configuración
- Infraestructura inmutable
- Código declarativo, no procesal
- Arquitectura solo cliente
A continuación explicaremos con más detalle por qué esto es tan importante.
Terraform, la herramienta de orquestación de servidores
Todas las herramientas antes mencionadas fueron creadas para la configuración de servidores, lo que significa que su objetivo principal es instalar y administrar software en los servidores ya existentes. Terraform se concentra más en el aprovisionamiento de servidores, dejando la implementación de contenedores de software en manos de Docker o Packer. Cuando toda la infraestructura de la nube se trata como código y todos los parámetros se combinan en archivos de configuración declarativos, todos los miembros del equipo pueden colaborar fácilmente en ellos, como lo harían con cualquier otro código.
Los servicios de consultoría de Terraform pueden mejorar en gran medida la eficiencia del aprovisionamiento de servidores y la gestión de infraestructura, asegurando una integración perfecta con herramientas existentes como Docker o Packer para la implementación de contenedores de software. Al aprovechar Terraform junto con la consultoría experta, los equipos pueden optimizar la gestión de su infraestructura en la nube tratándola como código, lo que permite una colaboración más fluida y una utilización optimizada de los recursos.
Infraestructura inmutable
Con Chef, Salt, Puppet o Ansible, cualquier actualización de software debe ejecutarse en el lugar. Dicho esto, cada servidor genera un registro único de actualizaciones a lo largo de su ciclo de vida. Con bastante frecuencia, esto puede conducir a la llamada deriva de configuración, cuando las diferencias en estas configuraciones generan errores que pueden usarse como exploits y violaciones de seguridad. Terraform aborda el problema utilizando un enfoque de infraestructura inmutable , donde cada nueva actualización de cualquier parámetro crea una instantánea de configuración separada, lo que significa la implementación de un nuevo servidor y el desaprovisionamiento del antiguo si fuera necesario. De esta manera, la actualización del entorno de desarrollo se realiza de forma fluida, sencilla y completamente a prueba de errores, mientras que volver a una de las configuraciones anteriores es tan sencillo como elegir la instantánea de configuración y aprovisionar un nuevo entorno según ella.
Estilo de código declarativo
Mientras que Chef o Ansible te obligan a escribir instrucciones de procedimiento paso a paso para alcanzar el estado deseado, Terraform, Salt o Puppet prefieren describir el estado final deseado del sistema, y la herramienta en sí se ocupa de alcanzar los objetivos establecidos. ¿Por qué es mejor? Porque un número bastante limitado de plantillas puede satisfacer todas las necesidades de gestión de configuración, y las primitivas incluidas permiten crear código complejo, pero limpio y modular. Con el código de procedimiento, es necesario pensar en todos los eventos y procesos recientes que tuvieron lugar para poder escribir instrucciones claras. Con Terraform simplemente ordenas a la herramienta que haga algo con el estado actualmente activo del sistema, es por eso que la base del código sigue siendo bastante pequeña y fácilmente comprensible.
Arquitectura solo cliente
Terraform aprovecha la API del proveedor de la nube para aprovisionar la infraestructura, lo que elimina la necesidad de controles de seguridad adicionales, ejecutando un servidor de gestión de configuración independiente y múltiples agentes de software. Ansible hace esto conectándose a través de SSH, aunque las capacidades son bastante limitadas. Debido a que trabaja a través de API, Terraform presenta una variedad literalmente infinita de acciones. Esto es mucho mejor en términos de seguridad, mantenibilidad y facilidad de uso general.
Desventajas de Terraform
Como Terraform es una herramienta relativamente nueva, todavía está lejos de ser perfecta. Por ejemplo, una vez el proveedor solucionó un error en el proveedor de encendido Terraform y eliminó las sangrías de JSON, lo que obligó a recrear todas las infraestructuras previamente configuradas.
Otra cosa importante a tener en cuenta es que debe haber un único maestro de capilla al utilizar esta herramienta de orquestación, ya que realizar las mismas acciones desde diferentes terminales con diferentes versiones de Terraform puede llevar a un resultado impredecible. Surgen problemas obvios con la colaboración y la gobernanza y, por ahora, aún deben abordarse. Esto prácticamente limita la cantidad de ingenieros de DevOps que trabajan con una base de código a uno (o a un solo terminal que trabaja por turnos).
El tercer defecto de Terraform es que se desarrolló teniendo en mente la implementación solo en la nube, mientras que sus contrapartes como Salt, Ansible y Puppet funcionan bien con servidores bare metal, debido a que se desarrollaron hace más de 5 años, sin un enfoque solo en la nube. mente. Esto hace que la herramienta de orquestación de configuración Terraform sea realmente específica de un nicho y no sea una solución única para todos.
Sin embargo, estamos seguros de que en los próximos años se corregirán todos los errores y se resolverán todos los problemas, lo que reforzará aún más los indudables beneficios de Terraform.
Beneficios de Terraformar
Además de las ventajas antes mencionadas, hay dos beneficios principales de Terraform que debes tener en cuenta:
- Súper portabilidad : tiene una herramienta y un lenguaje para describir la infraestructura de la nube de Google, AWS, OpenStack y CUALQUIER otra nube. Cambiar de proveedor ya no es un dolor de cabeza.
- Facilidad de implementación completa : puede tener instancias de Amazon ejecutando contenedores de Kubernetes con sus cargas de trabajo y administrar todo el sistema desde una sola herramienta.
Consideramos que Terraform es una de las mejores herramientas de orquestación de configuración disponibles en la actualidad. Puede que aún no sea tan popular como otras herramientas, pero creemos firmemente que causará una gran tracción en los próximos años. Creemos que los creadores de Vagrant y Consul han demostrado una vez más su experiencia y han entregado un gran producto.
Conclusiones
Al ser de código abierto, Terraform reunió una comunidad fuerte y apasionada de desarrolladores que impulsan su evolución constante. Creemos que esta herramienta es excelente y será mejor y mucho más popular con el tiempo. No será la ruina de Chef, Ansible o Puppet, simplemente ocupará el lugar que le corresponde en el conjunto de herramientas de DevOps.