Resumen
Ansible® y Hashicorp Terraform son dos herramientas open source que adoptan un enfoque de infraestructura como código (IaC) para automatizar entornos de TI. Ambas herramientas son esenciales para la gestión de la infraestructura, pero ofrecen funciones diferentes y especializadas en el ciclo de vida de la automatización.
Por un lado, Terraform es una herramienta de infraestructura como código específica, diseñada para crear, modificar y gestionar infraestructuras de forma segura y repetible. Por otro lado, Ansible es un motor de automatización de TI multipropósito, diseñado para configurar sistemas, implementar software y coordinar tareas complejas en servidores, dispositivos de red, herramientas de seguridad y entornos híbridos. Las estrategias de automatización modernas más eficaces combinan Terraform y Ansible para lograr una gestión integral del ciclo de vida de la infraestructura.
Las grandes empresas suelen pasar de las funciones esenciales de la solución open source Ansible a Red Hat® Ansible Automation Platform para gestionar y ampliar las iniciativas de automatización. Esta última incorpora funciones empresariales, como el control concentrado, el análisis de la automatización y el soporte oficial. Al comprender el papel que desempeña Terraform en el aprovisionamiento de la infraestructura y las funciones de configuración de Ansible, además de la importancia de Ansible Automation Platform para ajustar la automatización, los equipos pueden desarrollar una estrategia de automatización integral.
¿Qué es la infraestructura como código?
El aprovisionamiento de nuevos entornos de TI solía ser una tarea lenta, costosa y manual. Sin embargo, a medida que la virtualización, los contenedores y el cloud computing dieron lugar a cambios cada vez más numerosos y frecuentes en la infraestructura, la dependencia de los procesos manuales se volvió insostenible.
Ahí es donde entró en escena la infraestructura como código.
La infraestructura como código implica gestionar y aprovisionar la infraestructura de TI mediante código comprensible para las máquinas, sin tener que realizar ajustes manuales ni manipular el hardware.
La adopción de la infraestructura como código cambia fundamentalmente la relación entre los desarrolladores y los equipos de operaciones. En lugar de hacer clic en botones en una consola en la nube o depender de scripts específicos, se crean archivos de configuración con especificaciones completas de la infraestructura, lo que permite aprovisionar el mismo entorno de forma uniforme en todo momento, ya sea que se trate de una implementación en fase de desarrollo, prueba o producción. Al codificar y documentar la infraestructura en archivos que se pueden editar, distribuir y someter a control de versiones, la infraestructura como código ayuda a eliminar errores, acelerar las implementaciones y detener los cambios no documentados que provocan desajustes en la configuración.
La infraestructura como código es la base de la estrategia moderna de DevOps y la nube. Como esta metodología define la infraestructura a través de código que se ejecuta de manera automática, se necesitan herramientas especializadas para transformar esos archivos en una infraestructura funcional. Ansible, Red Hat Ansible Automation Platform y Terraform permiten agilizar y aprovechar mejor la infraestructura como código: Terraform se especializa en crear la infraestructura y Ansible se centra en configurar los elementos que la componen.
Recursos de Red Hat
Similitudes entre Ansible y Terraform
A pesar de especializarse en diferentes partes del ciclo de vida de la automatización, Terraform y Ansible tienen similitudes clave que definen su éxito.
Diseño sin agentes
Ansible y Terraform comparten una arquitectura moderna y simplificada que es más fácil de ejecutar que los sistemas de automatización más antiguos. Al no tener agentes, no es necesario instalar software especial ni agentes permanentes en los servidores o los recursos que gestionan, lo que simplifica de manera considerable la configuración. Terraform se comunica principalmente a través de interfaces de programación de aplicaciones (API) de proveedores de nube, mientras que Ansible ejecuta tareas con protocolos estándares como SSH (Secure Shell) y API para comunicarse con los nodos gestionados.
Open source y ecosistema comunitario
Tanto Ansible como Terraform son proyectos open source fundamentales con una amplia y activa base de usuarios. Este ecosistema comunitario proporciona grandes bibliotecas de contenido listo para usar. Terraform cuenta con miles de proveedores, por lo que puede interactuar con prácticamente todas las plataformas y nubes públicas. Del mismo modo, Ansible ofrece módulos y playbooks para casi cualquier tarea de configuración, lo que permite a los equipos que utilizan cualquiera de las dos herramientas encontrar soluciones y respaldo entre colegas con rapidez.
Estrategia de automatización complementaria
Por último, ambas herramientas comparten el objetivo de automatizar la infraestructura. Si bien cada una tiene su especialidad, algunas de sus funciones se superponen; por ejemplo, Ansible puede realizar el aprovisionamiento y Terraform puede ejecutar scripts de configuración básicos. Esto significa que ambas buscan convertir en código repetible y uniforme los procesos de TI manuales que tienden a tener errores. Gracias a su objetivo común, se puede combinar Ansible y Terraform para automatizar todo el flujo de trabajo.
Automatiza las implementaciones de las aplicaciones, optimiza la infraestructura y facilita actualizaciones continuas y soluciones a los problemas con Ansible y Terraform. Duración del video: 2:46.
Diferencias entre Ansible y Terraform
Ambas herramientas son tipos de infraestructura como código, pero están diseñadas de manera diferente para llevar a cabo sus objetivos principales. Comprender las diferencias te permitirá elegir la herramienta adecuada para una tarea o decidir la forma de integrarlas.
Enfoque declarativo o procedimental
La diferencia más importante radica en cómo se le indica a cada herramienta lo que debe hacer:
- Terraform utiliza HashiCorp Configuration Language (HCL), un lenguaje de configuración declarativo, lo que significa que se define el estado final deseado, es decir, cómo se quiere que sea la infraestructura. Luego, el motor de Terraform determina de manera automática los pasos necesarios para alcanzar ese estado y gestiona todas las dependencias por ti.
- Ansible adopta un enfoque mayoritariamente procedimental (o imperativo) para la automatización. Utiliza playbooks escritos en el lenguaje YAML, comprensible para las personas. El enfoque procedimental implica definir instrucciones explícitas paso a paso para lograr el resultado deseado. Este enfoque basado en tareas permite controlar con precisión la resolución de problemas y simplificarla, ya que el orden de ejecución es claro. Sin embargo, muchos módulos de Ansible también actúan de forma declarativa. Realizan cambios solo si el sistema de destino difiere del estado de configuración deseado.
Sistemas con estado y sin estado
Esta diferencia influye en el modo en que cada herramienta visualiza la infraestructura y realiza un seguimiento de ella a lo largo del tiempo:
- Terraform es una herramienta con estado. Mantiene un archivo de estado que actúa como única fuente de información, y realiza un seguimiento de todos los recursos de infraestructura que aprovisiona y de su configuración actual. El archivo de estado es esencial porque permite que Terraform gestione el ciclo de vida completo de un recurso, de modo que pueda aprovisionar, ajustar o retirar los recursos de forma segura cuando ya no sean necesarios.
- Ansible es principalmente una herramienta sin estado. No mantiene un archivo de estado permanente que realice un seguimiento de toda la infraestructura, sino que se basa en la idempotencia, es decir, la garantía de que ejecutar la misma tarea varias veces dará el mismo resultado sin realizar cambios innecesarios. Ansible logra la configuración deseada consultando directamente el sistema de destino antes de realizar un cambio.
Infraestructura inmutable o mutable
Las herramientas están diseñadas en torno a diferentes estrategias para gestionar las actualizaciones de la infraestructura:
- Terraform prefiere una infraestructura inmutable, es decir, que no se pueda modificar. Si necesitas realizar un cambio o una actualización importante, Terraform suele optar por eliminar el recurso antiguo y sustituirlo por uno nuevo configurado correctamente. Esta estrategia reduce el riesgo de que ocurran errores de configuración complejos que pueden agravarse con el tiempo.
- Ansible está diseñado para infraestructuras mutables, lo que significa que se destaca en la realización de cambios locales en los sistemas actuales en funcionamiento. Esto es necesario para las tareas del día 1 y del día 2, como aplicar parches de seguridad, ejecutar actualizaciones del sistema operativo o ajustar la configuración del firewall en un servidor que no se pueda sustituir con facilidad.
Desajustes en la configuración
Los desajustes en la configuración ocurren cuando la infraestructura que se ejecuta en la fase de producción se desvía de los parámetros definidos en el código fuente. Ambas herramientas abordan este aspecto, pero de distinta manera:
- Terraform utiliza su archivo de estado permanente para detectar estos desajustes constantemente. Puede comparar la infraestructura en ejecución con el archivo de estado e identificar de inmediato cualquier discrepancia.
- Ansible suele solucionar estos desajustes ejecutando de forma permanente tareas idempotentes y basándose en ellas para aplicar la configuración deseada en todo momento, lo cual evita que el sistema se aleje demasiado del estado esperado.
Funcionamiento en conjunto de Ansible y Terraform
La conclusión más importante de la comparación entre Terraform y Ansible es que lo mejor es utilizarlas conjuntamente en lugar de elegir solo una. Al aprovechar las ventajas de cada herramienta, las empresas pueden lograr una automatización integral, desde el momento en que se aprovisiona la infraestructura hasta la implementación y configuración constante de las aplicaciones.
Gestión del ciclo de vida
La práctica más recomendable es coordinar el uso de ambas herramientas de manera sencilla y secuencial. Primero, Terraform se encarga del aprovisionamiento del día 0, creando la infraestructura en la nube, como servidores y redes. Una vez que la infraestructura ya está aprovisionada correctamente, Ansible se ocupa de la configuración del día 1, aplicando políticas de seguridad, instalando el software requerido e implementando el código de la aplicación en esos nuevos recursos. Ansible también se encarga de las operaciones del día 2, como la aplicación de los parches, las actualizaciones y los cambios de configuración.
Organización con Ansible
Para los flujos de trabajo complejos, Ansible Automation Platform funciona como organizador central, ya que integra la ejecución de Terraform a un proceso de automatización más general. Esta plataforma puede ejecutar tareas de aprovisionamiento previo y generar una implementación de Terraform para desarrollar la infraestructura. Además, puede ejecutar tareas de aprovisionamiento posterior, como la configuración de aplicaciones, al tiempo que se integra a herramientas de gestión de servicios de TI (ITSM) como ServiceNow con fines de seguimiento.
Integraciones de Terraform y Ansible Automation Platform
Red Hat ofrece una colección certificada de contenido de Terraform para Ansible, que contiene módulos que te ayudan a gestionar y aprovisionar la infraestructura como código utilizando HashiCorp Terraform (HCP Terraform y Terraform Enterprise). La colección admite funciones de automatización similares a otras integraciones de herramientas de aprovisionamiento en la nube para Ansible, como AWS CloudFormation, Azure Resource Manager y Helm.
Además, Hashicorp ofrece un proveedor de Terraform para interactuar con Ansible, que consiste en un plugin que incorpora recursos y fuentes de datos que Terraform puede gestionar. Los proveedores deben declararse en la configuración de Terraform para que la herramienta pueda instalarlos y utilizarlos. El proveedor de Ansible para Terraform permite que Terraform gestione directamente el inventario de Ansible. Es decir, en lugar de requerir plugins de inventario independientes para recopilar de forma manual información sobre la infraestructura recién aprovisionada y enviarla a Ansible, el proveedor automatiza este paso. Los usuarios pueden definir el uso de un inventario de Ansible directamente en la configuración de Terraform, lo que permite que los playbooks de Ansible ejecuten tareas de configuración en los nuevos hosts de inmediato después de su creación.
Motivos para utilizar Red Hat Ansible Automation Platform
Las herramientas open source Terraform y Ansible sientan las bases para la infraestructura como código. Sin embargo, ajustar y gestionar estos flujos de trabajo integrados en grandes empresas plantea importantes desafíos en materia de seguridad y uniformidad. Red Hat Ansible Automation Platform simplifica estas tareas y transforma la automatización comunitaria en una solución empresarial estratégica. Ofrece el control concentrado que se necesita para gestionar procesos de automatización complejos que incluyen tanto el aprovisionamiento de Terraform como la configuración constante de Ansible.
Con la tecnología de open source como base, Ansible Automation Platform es un producto empresarial de confianza que se adquiere a través de una suscripción y brinda soporte durante todo el ciclo de vida. Se basa en la versión comunitaria de Ansible, que se beneficia de la experiencia y el conocimiento de miles de colaboradores en todo el mundo. Ansible Automation Platform ayuda a las empresas a crear, gestionar y ajustar sus cargas de trabajo de automatización. Proporciona una base flexible, estable y centrada en la seguridad para implementar soluciones de automatización integrales, lo que incluye la nube híbrida, las ubicaciones en el extremo de la red, las redes, la seguridad, la infraestructura y muchos otros casos prácticos.
¿Cuál es el nivel de soberanía de tu estrategia? Presentamos la herramienta Red Hat Sovereignty Readiness Assessment
La herramienta Red Hat Sovereignty Readiness Assessment es una evaluación de autoservicio basada en la web que proporciona una referencia clara y objetiva del control digital de tu organización en siete áreas fundamentales.