1. Libros y videos
  2. Linux
  3. Automatización con Puppet y Ansible
Extrait - Linux De la línea de comandos a la administración del sistema
Extractos del libro
Linux De la línea de comandos a la administración del sistema Volver a la página de compra del libro

Automatización con Puppet y Ansible

Los principios básicos de la automatización con Puppet

Luke Kanies creó Puppet en 2005 en un momento en el que la gestión de las infraestructuras informáticas se estaba volviendo exponencialmente más compleja. Por aquel entonces, las empresas y organizaciones se enfrentaban a un aumento significativo del número de servidores que tenían que gestionar, así como a una creciente diversidad de sistemas operativos y aplicaciones en uso. Estos retos se veían agravados por los métodos tradicionales de gestión de la configuración, que eran principalmente manuales, lentos y muy propensos al error humano. Estos métodos resultaban insuficientes para garantizar la coherencia y fiabilidad de los entornos informáticos, sobre todo en contextos en los que la capacidad de respuesta y la precisión eran fundamentales.

Puppet se diseñó para hacer frente a estos retos introduciendo la automatización en la gestión de la configuración de sistemas. Al permitir a los administradores de sistemas definir el estado deseado de las infraestructuras mediante scripts de configuración, Puppet eliminó un gran número de tareas manuales y repetitivas. Esto supuso un cambio fundamental en la forma de gestionar las infraestructuras informáticas, ofreciendo no sólo un ahorro de tiempo considerable, sino también una reducción significativa de los errores.

La capacidad de Puppet para desplegar y mantener configuraciones de forma coherente en múltiples sistemas resultó especialmente beneficiosa para grandes organizaciones, con infraestructuras complejas.

Sin embargo, como cualquier herramienta, Puppet tiene sus ventajas e inconvenientes, que influyen en su adopción y uso.

1. Ventajas de Puppet

  • Automatización y coherencia: Puppet automatiza el proceso de configuración, reduciendo los errores humanos y garantizando la coherencia en toda la infraestructura.

  • Infraestructura como código: con Puppet, la configuración de la infraestructura se escribe como código, lo que facilita el seguimiento de los cambios, la colaboración y la reutilización de las configuraciones.

  • Extensibilidad: con una amplia gama de módulos disponibles en Puppet Forge, Puppet puede gestionar una gran variedad de software y sistemas.

  • Integración con otras...

Los principios básicos de la automatización con Ansible

La creación de Ansible en 2012 por Michael DeHaan marcó un punto de inflexión en el campo de la automatización informática. Antes de Ansible, el panorama de la automatización estaba dominado por herramientas como Puppet y Chef, que, aunque potentes, tenían curvas de aprendizaje pronunciadas debido a su complejidad y a la necesidad de conocer lenguajes de programación específicos. Estas herramientas también requerían la instalación de agentes en los nodos de destino, lo que podía complicar la gestión de la configuración y aumentar la carga de trabajo de los administradores de sistemas.

Michael DeHaan, gracias a su experiencia con Cobbler, una herramienta centrada en simplificar la instalación de servidores, vio la oportunidad de mejorar la gestión de la configuración y la automatización de las tareas informáticas. Su objetivo era democratizar la automatización haciéndola accesible a un público más amplio, incluidos quienes carecen de profundos conocimientos de programación. Ansible se diseñó para eliminar las barreras técnicas, permitiendo a los administradores de sistemas, desarrolladores y personal operativo crear y gestionar configuraciones sin tener que escribir código complejo.

La filosofía de diseño de Ansible se basa en varios pilares clave que contribuyen a sus ventajas distintivas:

  • Simplicidad y eficiencia: al utilizar YAML para los playbooks, Ansible hace que el código de automatización no solo sea fácil de escribir, sino también de leer y entender. Esta claridad mejora la colaboración dentro de los equipos y facilita el mantenimiento de los scripts de automatización.

  • Arquitectura sin agentes: el enfoque sin agentes de Ansible elimina la necesidad de instalar y gestionar software adicional en los nodos de destino. Esto reduce los riesgos de seguridad, simplifica la gestión de la infraestructura y acelera el despliegue de las tareas de automatización.

  • Idempotencia: Ansible garantiza que la ejecución repetida de playbooks sólo modifica el sistema de destino si aún no se ha alcanzado el estado deseado. Esto minimiza los errores y las interrupciones al garantizar que los cambios...

Ejemplos prácticos de uso de Puppet y Ansible

Como hemos visto, Puppet destaca como una herramienta potente y flexible para la gestión declarativa de la configuración. Los complejos escenarios de automatización con Puppet demuestran su capacidad para orquestar meticulosamente diversos aspectos de una infraestructura de TI, desde la gestión de paquetes y servicios hasta la configuración detallada de servidores y aplicaciones.

Ansible, por su parte, es una herramienta de automatización de TI que destaca por su facilidad de uso y su enfoque sin agentes. Ansible utiliza archivos YAML llamados playbooks para definir configuraciones, despliegues y orquestaciones de forma declarativa. Gracias a su arquitectura sin agentes, Ansible no requiere la instalación de ningún software en los hosts gestionados, lo que simplifica el despliegue y la gestión.

Mostraremos ejemplos de cómo escenarios avanzados de automatización, como la configuración de servidores web NGINX con SSL, la configuración de clústeres de bases de datos con replicación, etc., se pueden llevar a cabo eficientemente utilizando manifiestos, resaltando el poder de esta herramienta en la orquestación de configuraciones complejas.

1. Escenario A: configuración de un servidor web NGINX con SSL y redirección

Situación

Necesita desplegar un servidor web NGINX en un servidor Ubuntu. Este servidor servirá contenido estático ubicado en /var/www/html. También debe configurar NGINX para utilizar SSL con un certificado ya presente en el servidor. Por último, todas las peticiones HTTP se deben redirigir a HTTPS.

Requisitos previos

  • Un certificado SSL y una clave privada se almacenan en /etc/ssl/certs/server.crt y /etc/ssl/private/server.key.

  • El contenido estático ya está presente en /var/www/html.

Objetivos

  • Instale NGINX.

  • Configurar NGINX para servir contenido sobre HTTPS y redirigir HTTP a HTTPS.

  • Asegúrese de que NGINX se inicia y activa al arrancar el sistema.

Posible aplicación

Cree un archivo de manifiesto Puppet nginx.pp, un archivo de manifiesto site.pp y un template nginx_default.erb.

Manifiesto nginx.pp

class nginx_ssl_setup { 
 
  # 1. instalar NGINX 
package { 'nginx': 
    ensure => installed, 
  } 
 
  #...