¿Qué es Puppet?
En DevOps, desea automatizar tantas tareas como sea posible. La configuración manual de entornos lleva semanas con grandes infraestructuras. Para cuando todo esté configurado, estará apagando incendios en lugar de implementar nuevas soluciones efectivas, como los servidores Rancher.
Puppet ayuda a automatizar tareas manuales para aprovisionar sistemas e implementar aplicaciones rápidamente. La gestión dinámica de la infraestructura es el núcleo de Puppet.
Este artículo explica qué es Puppet, qué problemas resuelve y cómo utilizar Puppet para automatizar trabajos manuales como un equipo DevOps con éxito.
¿Qué es una marioneta?
Puppet es una herramienta IaC (Infraestructura como código) para administrar múltiples servidores. Escrito en Ruby (principalmente), Puppet funciona en varios sistemas similares a Unix y también es compatible con Windows.
El software es muy maduro, con el lanzamiento inicial en 2005. Puppet viene como un software gratuito de código abierto, y también está disponible una versión propietaria para infraestructuras complejas.
¿Para qué se utiliza el títere?
Puppet automatiza la implementación y la administración de la configuración del servidor. El software permite manejar los hilos y administrar estados en múltiples sistemas a la vez, y el enfoque reduce la configuración manual y la administración de servidores individualmente.
Puppet define el estado deseado para el sistema en lugar de cómo llegar allí. La configuración se aplica a varias plataformas y dispositivos y mantiene el estado en toda la infraestructura. En general, hay menos necesidad de que los administradores de sistemas apaguen incendios, lo que permite que el equipo de DevOps implemente nuevas y mejores soluciones de servidor.
Gestión de configuración de marionetas
Los scripts de automatización ayudan a manejar tareas repetitivas, como la instalación y configuración de servidores. Sin embargo, cuando se trabaja con una infraestructura extensa, los scripts de automatización no escalan.
La gestión de la configuración proporciona una solución para configuraciones de infraestructura extensas. Las prácticas se consideran la columna vertebral de DevOps y permiten lanzamientos de software frecuentes y más confiables en una canalización de DevOps establecida.
La gestión de la configuración del servidor se produce gracias al enfoque de infraestructura como código. En el caso de Puppet, el código de administración del servidor está en código Puppet, que es similar a Ruby. El lenguaje es declarativo y describe una configuración basada en modelos.
¿Cómo funciona la marioneta?
Puppet utiliza un enfoque cliente-servidor y consta de los siguientes sistemas:
- Puppet Master es un servidor con el demonio Puppet Master que administra información crucial del sistema para todos los nodos mediante manifiestos.
- Los Puppet Agents son nodos con Puppet instalado en ellos con el demonio Puppet Agent ejecutándose.
Las siguientes secciones explican los elementos esenciales y la terminología de Puppet, lo que ayuda a aclarar cómo funciona Puppet.
Topología y arquitectura de marionetas
Puppet utiliza una arquitectura cliente/servidor que consta de Puppet Master y Puppet Agents. Puppet Agents utiliza el modo de extracción para sondear al maestro y recuperar información de configuración específica del nodo y del sitio.
La topología pasa por los siguientes pasos:
- Un nodo que ejecuta un demonio de Puppet Agent recopila toda la información (hechos) sobre sí mismo y el agente envía los hechos al Puppet Master.
- Puppet Master usa los datos para crear un catálogo sobre cómo se debe configurar el nodo y lo envía de regreso al Puppet Agent.
- El Puppet Agent se configura a sí mismo según el catálogo e informa al Puppet Master.
Puppet usa una utilidad llamada Facter para descubrir la información del sistema. La herramienta viene con la instalación de Puppet por defecto.
Titiritero
Puppet Master es un demonio que se ejecuta en un servidor dedicado. Puppet Master es la fuente de información y la autoridad de configuración como nodo servidor. El maestro envía instrucciones a todos los nodos de agentes y supervisa la configuración del sistema.
El Titiritero es responsable de las siguientes tareas:
- Crear un catálogo para los agentes.
- Transferencias de archivos desde un servidor de archivos a los agentes.
- Aceptar certificados SSL de agentes.
- Almacenamiento de manifiestos de configuración.
Puppet utiliza la administración de acceso a la identidad a través de un usuario y un grupo dedicados, lo que brinda seguridad y expone solo la información requerida a los agentes. Sin embargo, no todas las acciones requieren privilegios elevados.
Agentes títeres
Puppet Agent es un demonio de Puppet que se ejecuta en un sistema o nodo. Los agentes tienen ciertos privilegios en el nodo para aplicar catálogos de configuración extraídos de Puppet Master.
Para recibir permisos de comunicación, un agente solicita un certificado SSL durante el primer contacto con el maestro. El certificado se comprueba cada vez que el agente solicita al maestro actualizaciones de configuración antes de enviar la información. Un maestro también autentica a los agentes para garantizar la información de configuración correcta.
Los agentes de marionetas modifican la configuración del sistema y requieren permisos de root para realizar tareas.
Cifrado de marionetas y seguridad de la comunicación
Puppet usa OpenSSL para comunicación y seguridad. Basado en los protocolos SSL y TLS, Puppet utiliza el cifrado SSL/TLS estándar y los certificados SSL para la autenticación y verificación del agente/maestro. Además, Puppet cifra el flujo de tráfico entre los agentes y los servidores mediante SSL/TLS con SHA-256 como hash predeterminado.
Los métodos de cifrado de Puppet garantizan lo siguiente:
- Autenticación y verificación de maestro/agente.
- Prevención de filtraciones de datos entre maestro y agentes.
El maestro genera su propio certificado de CA, clave privada, CRL (Lista de revocación de certificados) y un certificado de servidor. El certificado del servidor se envía a los agentes para habilitar la comunicación SSL y TLS.
Ventajas de Puppet y por qué debería usarlo
Puppet es una de las herramientas de automatización de gestión de configuración más antiguas y populares. A continuación se presentan cinco ventajas que brindan buenas razones para comenzar a usar Puppet.
1. Código abierto
Puppet es de código abierto, lo que hace que la tecnología sea extensible. Las bibliotecas y los módulos personalizados enriquecen los proyectos individuales para adaptarse a su caso de uso.
El código abierto también viene con el beneficio de tener una comunidad activa. Muchos debates, foros y expertos están listos para ayudar y responder preguntas.
2. Abstracción de recursos
Las tareas de configuración son repetitivas y, a menudo, se requieren los mismos pasos en servidores con diferentes sistemas operativos a través de pasos específicos de la plataforma. Recordar todos los comandos es una tarea imposible.
Facter ayuda a Puppet a descubrir los detalles y lograr la abstracción. Los datos específicos del sistema y los detalles del sistema operativo son familiares para Puppet gracias a Facter.
3. Idempotencia
Las configuraciones redundantes son un tema complejo cuando se trabaja con numerosos servidores, y Puppet pretende aplicar solo aquellos cambios que afectan al sistema. Si se logra el estado deseado de la infraestructura, Puppet no ejecuta los comandos. Esta característica de Puppet se conoce como idempotencia, que ayuda a reducir la redundancia y aumentar la eficiencia.
4. Multiplataforma
Puppet cubre una amplia gama de plataformas, lo que aumenta la cantidad de servidores en el proceso de automatización de la configuración. La herramienta funciona en Windows, OS X, sistemas basados en Debian, Fedora, Gentoo, RHEL y Solaris.
5. Flexibles
El lenguaje Puppet incluye una forma de anular las instrucciones y crear excepciones para diferentes escenarios. Puppet también ayuda a programar acciones de mantenimiento específicas periódicamente.
Conclusión
Puppet es una poderosa herramienta para administrar configuraciones y tareas del servidor, y es una excelente opción para servidores estables que no cambian dinámicamente o con frecuencia.
Para ver cómo se compara Puppet con otras tecnologías similares, consulte nuestro artículo de comparación:Ansible vs. Terraform vs. Puppet.
Computación en la nube
- ¿Qué es el torneado de diamantes?
- ¿Qué es el mecanizado ultrasónico?
- ¿Qué es el moldeo rotacional?
- ¿Qué es el cromado?
- ¿Qué es una herramienta de perforación?
- ¿Qué es la perforación por fricción?
- ¿Qué es la soldadura por puntos?
- ¿Qué es el hierro galvanizado?
- ¿Qué es un molino de bolas?
- ¿Qué es el cambio de plataforma en la nube?
- ¿Qué es A2 Steel?