GNU/Linux >> Tutoriales Linux >  >> Linux

Terraform vs Ansible:¿Cuál es la diferencia y cuál deberías usar?

La forma en que DevOps como cultura está ganando impulso, herramientas como Ansible y Terraform son testigos de una gran demanda y popularidad.

Ambas herramientas se consideran Infraestructura como código (IaC) soluciones que ayudan a implementar código e infraestructura. Mientras que Ansible actúa como una solución de administración de configuración comúnmente abreviada como "CM", Terraform es una herramienta de aprovisionamiento o orquestación de servicios.

Tenga en cuenta que existen superposiciones y que estos términos no son necesariamente excluyentes entre sí. Esto es lo que confunde a la gente y por eso voy a comparar Ansible y Terraform.

Te explicaré para qué sirven estas herramientas, cuáles son sus pros y sus contras. Esto lo ayudará a decidir si debe usar Ansible o Terraform en sus proyectos.

Ansible y Terraform:¿Qué son estas herramientas?

Primero echemos un vistazo breve a cuáles son estas populares herramientas de DevOps.

¿Qué es Ansible?

Ansible es una herramienta de automatización de TI. Puede configurar sistemas, implementar software y realizar tareas de TI más avanzadas, como implementaciones continuas o actualizaciones continuas sin tiempo de inactividad.

¿Qué es Terraform?

Terraform es una herramienta para construir, cambiar y versionar la infraestructura de manera segura y eficiente. Terraform puede gestionar proveedores de servicios populares y existentes, así como soluciones internas personalizadas.

Antes de resaltar las diferencias entre estas dos herramientas, primero comprendamos qué es la gestión de la configuración y la orquestación.

Configuration Management vs. Orchestration

La gestión de la configuración es un conjunto de procesos y procedimientos que garantiza que siempre se cumpla el estado deseado y coherente de su infraestructura, que incluye servidores y software. En otras palabras, es una forma de asegurarse de que un sistema funcione como se espera a medida que se realizan cambios con el tiempo.

Las herramientas de CM garantizan que las implementaciones de TI sean más rápidas, incrementales, repetibles, escalables, predecibles y mantengan el estado deseado, lo que lleva los activos administrados al estado esperado.

Herramientas como Ansible se utilizan para realizar la gestión de la configuración.

Cuando se trata de orquestación, puede usar las herramientas de orquestación no solo para aprovisionar servidores, sino también bases de datos, cachés, balanceadores de carga, colas, monitoreo, configuración de subred, configuración de firewall, reglas de enrutamiento, certificados SSL y casi todos los demás aspectos de su infraestructura. , principalmente infraestructura de nube pública.

Terraform es una herramienta de orquestación. Está diseñado para aprovisionar las propias instancias del servidor, dejando el trabajo de configurar esos servidores a otras herramientas.

Lenguaje procedimental frente a declarativo

Las herramientas de DevOps se pueden clasificar como procedimentales o declarativas en función de cómo realizan sus acciones cuando se aplican.

Procedimiento describe una aplicación que requiere que se establezcan los pasos exactos en el código, mientras que Declarative “declara” exactamente lo que se necesita, no el proceso mediante el cual se logra el resultado.

Ansible utiliza un estilo de procedimiento en el que escribe el código que especifica las tareas paso a paso para lograr el estado final deseado.

Mientras que herramientas como Terraform, AWS CloudFormation son todas declarativas al definir el proceso en el que escribe código que especifica el estado final deseado. Por ejemplo, si necesita 5 instancias EC2, esa es exactamente la cantidad que tendría después de ejecutar el código.

Ansible y Terraform:Comparación

Veamos cuáles son las ventajas y desventajas de usar Terraform:

Ventajas de Terraform

  • Terraform mantiene toda la infraestructura de la nube y hace que esos recursos estén disponibles como código. Eso hace que el proceso de cambio incremental sea muy fácil.
  • Diseño modular.
  • Simple y fácil de aprender
  • Mantiene el estado de los recursos creados. Todos los objetos creados por Terraform se volverán a crear si se eliminan mediante cualquier otro proceso.
  • Integración perfecta con canalizaciones de CI/CD.
  • Permite importar recursos existentes para ponerlos en estado Terraform.
  • Cuando ejecuta terraform plan , muestra los cambios que se van a aplicar a los recursos que ya existen. Esto brinda a los ingenieros de DevOps una idea de los cambios que están a punto de realizar, especialmente si los cambios no son los esperados.

Desventajas de Terraform

  • Sin retrocesos. Debe destruir todo y se requiere volver a ejecutar el script tf.
  • El manejo de errores no está maduro. A partir de Terraform v.12.20 hay dos nuevas funciones disponibles para los consumidores try() y can() .
  • La creación de scripts de Terraform no está permitida directamente desde archivos de estado.
  • La herramienta Terraform todavía está en desarrollo y está pasando por muchas versiones beta cada mes.
  • No todos los elementos se pueden importar. terrafom import El comando solo puede importar un recurso a la vez. Esto significa que aún no puede señalar la importación de Terraform a una colección completa de recursos, como una VPC de AWS, e importarla toda.

Pros y contras de usar Ansible

Ahora, echemos un vistazo a los aspectos positivos y negativos de Ansible.

Ventajas de Ansible

  • Simple y fácil de aprender
  • Sin agente
  • Haga que todo el proceso de implementación sea automático y amigable para los desarrolladores
  • Scripts simples y legibles basados ​​en YAML (Ansible Playbooks)
  • Enorme compatibilidad con módulos
  • Disponibilidad de un repositorio central llamado Ansible galaxy para buscar y reutilizar contenido de Ansible.

Desventajas de Ansible

  • Carece de oferta de interfaz de usuario. AWX, que finalmente se convirtió en Ansible tower, todavía tiene un gran margen de mejora.
  • Sin mantenimiento estatal. Ansible no realiza un seguimiento de las dependencias. Simplemente ejecuta una serie secuencial de tareas, se detiene cuando finaliza, falla o encuentra un error.
  • No está a la altura en lo que respecta a la compatibilidad con el sistema operativo Windows. Ansible aún se encuentra en las primeras etapas para ampliar la compatibilidad con Windows.
  • No es tan sencillo si tiene que escribir scripts complejos con lógica extensa en libros de jugadas.
  • El soporte empresarial aún no es maduro/fiable.
  • Carece de mensajes de error descriptivos cuando se trata de depurar libros de estrategias complejos.

Terraform o Ansible? ¿Cuál es mejor para ti?

Créame, no es una pregunta fácil de responder. Porque depende en gran medida de sus requisitos.

En el mundo real, dentro de las organizaciones de TI, nunca confía en una herramienta, sino que utiliza una combinación de diferentes herramientas para lograr los resultados deseados.

Tanto las herramientas de Ansible como las de Terraform hacen muchas cosas bastante bien. Y mi preferencia personal es usar Terraform para orquestación/aprovisionamiento y Ansible para administración de configuración.

Terraform rinde al máximo de sus capacidades cuando se utiliza para la orquestación de infraestructura (administración de recursos de la nube), ya que para eso fue creado.

Ansible, por otro lado, es el más adecuado y está optimizado para tareas de administración de configuración (aprovisionamiento de software y máquinas). También se pueden realizar tareas de orquestación con él, pero eso es solo una parte de lo que hace.

Mi sugerencia:use lo mejor y lo creado originalmente para la tarea que desea realizar.

¡Pero esa tampoco es la regla general, ya que puede encontrar personas que prefieren usar una herramienta para todo y les funciona!

Conclusión

Ambas herramientas tienen sus propios beneficios y limitaciones a la hora de diseñar entornos de Infraestructura como código para la automatización. Y sí, el éxito depende totalmente de saber qué herramientas usar para qué trabajos.

Espero haberle aclarado algunas cosas sobre Ansible y Terraform. Si aún tiene preguntas o sugerencias, hágamelo saber en la sección de comentarios.


Linux
  1. ¿Cuál es la diferencia entre InnoDB y MyISAM?

  2. Explicación de los tipos de sistemas de archivos de Linux, ¿cuál debe usar?

  3. ¿Qué es el Kernel de Linux? ¿Debería actualizar a la última versión del Kernel?

  4. ¿Por qué debería uno usar sudo?

  5. ¿Cuál es la diferencia entre ls y l?

¿Cuál es la diferencia entre Linux y Unix?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Qué es un Homelab y por qué debería tener uno?

¿Qué es Zsh? ¿Deberías usarlo?

¿Qué es la función de la comunidad ONLYOFFICE y por qué debería usarla?