Ansible y Puppet: Comparativa de herramientas de gestión de configuración y automatización

En el mundo de la administración de sistemas y DevOps, las herramientas de gestión de configuración y automatización son fundamentales para mantener una infraestructura eficiente y estable. Ansible y Puppet son dos de las herramientas más populares en este ámbito. En este artículo, exploraremos sus características principales, diferencias, cuándo aplicar cada una y cómo utilizarlas en un escenario de ejemplo con tres servidores.

Ansible es una herramienta de automatización y gestión de configuraciones basada en Python. Utiliza un enfoque «push» para aplicar cambios, lo que significa que el servidor de administración envía los cambios directamente a los nodos gestionados. Es fácil de aprender, ya que utiliza archivos de configuración en formato YAML y no requiere la instalación de agentes en los nodos gestionados.

Puppet es otra herramienta de gestión de configuraciones que utiliza un enfoque declarativo basado en su propio lenguaje de programación. Puppet utiliza un modelo «pull» en el que los nodos gestionados (llamados agentes) consultan al servidor maestro de Puppet (llamado nodo maestro) para obtener su configuración.

Principales diferencias:

  • Enfoque: Ansible utiliza un enfoque «push», mientras que Puppet utiliza un enfoque «pull».
  • Lenguaje: Ansible utiliza YAML, mientras que Puppet utiliza su propio lenguaje de programación.
  • Instalación de agentes: Ansible no requiere agentes en los nodos gestionados, mientras que Puppet sí.
  • Curva de aprendizaje: Ansible es más fácil de aprender que Puppet.

Cuándo aplicar cada herramienta:

  • Ansible: Es recomendable cuando se busca una herramienta fácil de aprender y rápida de implementar, especialmente en entornos pequeños a medianos.
  • Puppet: Es ideal para entornos empresariales de gran escala que requieren una solución madura y ampliamente soportada.

Ejemplo de escenario con tres servidores:

Supongamos que tenemos tres servidores: un servidor de administración (192.168.0.1) y dos nodos gestionados (192.168.0.2 y 192.168.0.3).

Ansible:

  1. Instalar Ansible en el servidor de administración (192.168.0.1).
dnf install ansible -y
  1. Crear un archivo de inventario (inventory.ini) en el servidor de administración:
192.168.0.2
192.168.0.3
  1. Crear un archivo de playbook (install_vim.yml) en el servidor de administración:
- name: Instalar vim
hosts: nodes
tasks:
- name: Instalar paquete vim
ansible.builtin.dnf:
name: vim
state: present
  1. Ejecutar el playbook:
playbook -i inventory.ini install_vim.yml

Puppet:

  1. Instalar Puppet en el nodo maestro (192.168.0.1) y en los agentes (192.168.0.2 y 192.168.0.3).

Crear un archivo de manifiesto (install_vim.pp) en el directorio «/etc/puppetlabs/code/environments/production/manifests/» del nodo maestro (192.168.0.1):

node '192.168.0.2', '192.168.0.3' {
package { 'vim':
ensure => 'installed',
provider => 'dnf',
}
}
  1. En cada agente (192.168.0.2 y 192.168.0.3), ejecutar el agente Puppet para aplicar la configuración:
puppet agent --test
  1. Cuando esté seguro de que la configuración es correcta, aplicar la configuración en los agentes sin el parámetro --test:
puppet agent --onetime --verbose

En resumen, Ansible y Puppet son dos herramientas populares de gestión de configuración y automatización que facilitan la administración de infraestructuras de TI.

Aunque ambos logran objetivos similares, difieren en su enfoque, lenguaje y requisitos de instalación. Al comprender sus diferencias y cuándo aplicar cada herramienta, puedes elegir la solución adecuada para tu entorno específico. El ejemplo proporcionado muestra cómo instalar el paquete «vim» en dos nodos gestionados utilizando Ansible y Puppet, y cómo administrar la configuración desde un servidor de administración centralizado.

Publicado y escrito directamente desde el celular

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *