Puppet - Descripción general
Puppet es una herramienta de administración de configuración desarrollada por Puppet Labs para automatizar la administración y configuración de la infraestructura. Puppet es una herramienta muy poderosa que ayuda en el concepto de Infraestructura como código. Esta herramienta está escrita en lenguaje Ruby DSL que ayuda a convertir una infraestructura completa en formato de código, que se puede administrar y configurar fácilmente.
Puppet sigue el modelo cliente-servidor, donde una máquina en cualquier clúster actúa como servidor, conocida como puppet master y la otra actúa como cliente conocida como esclava en los nodos. Puppet tiene la capacidad de administrar cualquier sistema desde cero, desde la configuración inicial hasta el final de la vida útil de cualquier máquina en particular.
Características del sistema de marionetas
A continuación se muestran las características más importantes de Puppet.
Idempotencia
Puppet es compatible con Idempotency, lo que lo hace único. Al igual que Chef, en Puppet, uno puede ejecutar de forma segura el mismo conjunto de configuración varias veces en la misma máquina. En este flujo, Puppet comprueba el estado actual de la máquina de destino y solo realizará cambios cuando haya algún cambio específico en la configuración.
Idempotency ayuda a administrar cualquier máquina en particular a lo largo de su ciclo de vida desde la creación de la máquina, los cambios de configuración en la máquina, hasta el final de su vida útil. La función Puppet Idempotency es muy útil para mantener la máquina actualizada durante años en lugar de reconstruir la misma máquina varias veces, cuando hay algún cambio de configuración.
Multiplataforma
En Puppet, con la ayuda de Resource Abstraction Layer (RAL) que usa recursos de Puppet, uno puede apuntar a la configuración especificada del sistema sin preocuparse por los detalles de implementación y cómo funcionará el comando de configuración dentro del sistema, que están definidos en la configuración subyacente archivo.
Marioneta - Flujo de trabajo
Puppet utiliza el siguiente flujo de trabajo para aplicar la configuración en el sistema.
En Puppet, lo primero que hace el Puppet master es recopilar los detalles de la máquina de destino. Usando el factor que está presente en todos los nodos Puppet (similar a Ohai en Chef), obtiene todos los detalles de configuración del nivel de la máquina. Estos datos se recopilan y se envían al Puppet master.
Luego, el puppet master compara la configuración recuperada con los detalles de configuración definidos, y con la configuración definida crea un catálogo y lo envía a los agentes Puppet seleccionados.
El agente Puppet luego aplica esas configuraciones para llevar el sistema al estado deseado.
Finalmente, una vez que uno tiene el nodo de destino en el estado deseado, envía un informe al Puppet master, lo que ayuda al Puppet master a comprender dónde se encuentra el estado actual del sistema, como se define en el catálogo.
Marioneta - Componentes clave
Los siguientes son los componentes clave de Puppet.
Recursos de marionetas
Los recursos de marionetas son los componentes clave para modelar cualquier máquina en particular. Estos recursos tienen su propio modelo de implementación. Puppet usa el mismo modelo para obtener cualquier recurso en particular en el estado deseado.
Proveedores
Los proveedores son básicamente cumplidores de cualquier recurso particular utilizado en Puppet. Por ejemplo, el tipo de paquete 'apt-get' y 'yum' son válidos para la gestión de paquetes. A veces, más de un proveedor estaría disponible en una plataforma en particular. Aunque cada plataforma siempre tiene un proveedor predeterminado.
Manifiesto
Manifest es una colección de recursos que se acoplan dentro de la función o clases para configurar cualquier sistema de destino. Contienen un conjunto de código Ruby para configurar un sistema.
Módulos
El módulo es el bloque de construcción clave de Puppet, que puede definirse como una colección de recursos, archivos, plantillas, etc. Se pueden distribuir fácilmente entre diferentes tipos de SO definiéndose que son del mismo tipo. Como se pueden distribuir fácilmente, un módulo se puede utilizar varias veces con la misma configuración.
Plantillas
Las plantillas utilizan expresiones de Ruby para definir el contenido personalizado y la entrada de variables. Se utilizan para desarrollar contenido personalizado. Las plantillas se definen en manifiestos y se copian en una ubicación en el sistema. Por ejemplo, si uno quiere definir httpd con un puerto personalizable, puede hacerlo usando la siguiente expresión.
Listen <% = @httpd_port %>
La variable httpd_port en este caso se define en el manifiesto que hace referencia a esta plantilla.
Archivos estáticos
Los archivos estáticos se pueden definir como un archivo general que a veces se requieren para realizar tareas específicas. Se pueden copiar simplemente de una ubicación a otra usando Puppet. Todos los archivos estáticos se encuentran dentro del directorio de archivos de cualquier módulo. Cualquier manipulación del archivo en un manifiesto se realiza utilizando el recurso de archivo.