Puppet es una herramienta de gestión de configuración de código abierto que nos ayuda a automatizar la infraestructura de TI, incluido el aprovisionamiento, la gestión de configuración y la aplicación de parches a cientos de sistemas cliente desde la ubicación central.
Puppet está disponible para los sistemas operativos Linux, Mac, BSD, Solaris y Windows. Está escrito en lenguaje "Ruby" y publicado bajo Licencia Apache,
Esta guía lo ayuda a instalar Puppet en CentOS 8 / RHEL 8.
Arquitectura
Pupper está configurado en una arquitectura agente-maestro. En esta arquitectura, los nodos administrados ejecutan el software del agente de títeres, como un servicio en segundo plano. Por otro lado, uno o más servidores ejecutan la aplicación maestra, es decir. Servidor de marionetas.
El agente de marionetas envía información periódicamente al titiritero y solicita un catálogo. El maestro compila y devuelve el catálogo de ese nodo en particular, utilizando las fuentes de información a las que tiene acceso.
Entorno
Aquí, configuraremos una marioneta en la arquitectura del servidor/agente.
Titiritero
Nombre de host: marionetaservidor.itzgeek.local
Dirección IP: 192.168.0.10
Sistema operativo: Cent OS 8
Cliente títere
Nombre de host: cliente.itzgeek.local
Dirección IP: 192.168.0.20
Sistema operativo: Cent OS 8
Requisitos
Instalar NTP
El tiempo de los nodos maestro y cliente debe estar sincronizado con precisión con el servidor NTP porque el servidor Puppet actuará como la autoridad de certificación.
Si necesita configurar el servidor NTP, entonces:
LEER: Cómo configurar el servidor NTP usando Chrony
Si necesita configurar el Cliente NTP, entonces:
LEER: Cómo configurar el cliente NTP usando Chrony
Si es necesario, cambie también la zona horaria del sistema.
LEER :Cómo cambiar la zona horaria en CentOS 8 / RHEL 8
DNS
El agente de Puppet usa el nombre de host para comunicarse con el servidor de Puppet. Por lo tanto, asegúrese de que los nodos de los agentes puedan resolver el nombre de host del Puppet Server con la ayuda del archivo /etc/hosts o del servidor DNS.
Instalar y configurar el servidor Puppet
Puppet Server es el software de servidor que se ejecuta en el nodo maestro. Puppet Server controla las configuraciones de los nodos gestionados (puppet-agent).
Agregar repositorio
Para instalar el servidor de marionetas, necesitaríamos agregar el repositorio de marionetas instalando el paquete de configuración del repositorio.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Instalar Marioneta
Instale el servidor Puppet usando el siguiente comando.
yum install -y puppetserver
Asignación de memoria
De manera predeterminada, Puppet Server está configurado para usar 2 GB de memoria. Puede cambiar la asignación de memoria según la cantidad de nodos conectados a ella.
Para esta demostración, asignaré 512 MB de memoria.
Para cambiar el valor de la asignación de memoria, edite el siguiente archivo.
vi /etc/sysconfig/puppetserver
Cambia el valor.
De:
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Para:
Para 512 MB, use la siguiente configuración.
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Configurar servidor de marionetas
El archivo de configuración de Puppet consta de dos secciones denominadas [maestro] y [principal] para el servidor y el agente de Pupper, respectivamente.
vi /etc/puppetlabs/puppet/puppet.conf
Modifique el archivo según su entorno. Los agentes Pupper pueden usar cualquiera de los nombres de host mencionados en dns_alt_names para conectarse con el servidor Pupper.
# Pupper Server Configuration [master] dns_alt_names = puppetserver,puppetserver.itzgeek.local # Puppet Agent Configuration [main] certname = puppetserver.itzgeek.local server = puppetserver.itzgeek.local runinterval = 30m
Iniciar servidor de marionetas
Genere la CA de firma raíz e intermedia para Puppet Server.
puppetserver ca setup
Output: Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/caSi obtiene el comando puppetserver:no encontrado, ejecute source /etc/profile.d/puppet-agent.sh en la terminal o cierre sesión en la sesión actual y vuelva a iniciarla.
Inicie y habilite el servidor de marionetas.
systemctl start puppetserver
systemctl enable puppetserver
Cortafuegos
El servidor de Puppet escucha en el puerto 8140. Por lo tanto, configure el firewall para permitir que los agentes puedan conectarse al maestro.
firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload
Instalar y configurar Puppet Agent
Agregar repositorio
Para instalar el agente de Puppet, necesitaríamos agregar el repositorio de Puppet en todos los nodos.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Agente de instalación
Instale el agente de marionetas en su cliente usando el siguiente comando.
dnf install -y puppet-agent
Edite el archivo de configuración de marionetas y configure la información del servidor de marionetas.
Establezca el valor del servidor según el nombre de host de su servidor Puppet. En mi caso, el servidor es puppetserver.itzgeek.local y certname es el nombre de host de mi cliente (client.itzgeek.local).
vi /etc/puppetlabs/puppet/puppet.conf
Establecer como a continuación.
[main] server = puppetserver.itzgeek.local certname = client.itzgeek.local runinterval = 30m
Puede cambiar el valor de runinterval según el requisito. Esta configuración controla cuánto tiempo debe esperar el agente entre las dos solicitudes de catálogo. Puede establecer el valor en segundos (10 o 10 s), minutos (10 m) y horas (1 h).
Inicie el agente de marionetas en el nodo y haga que se inicie automáticamente al arrancar el sistema.
puppet resource service puppet ensure=running enable=true
Output: Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', provider => 'systemd', }Si obtiene el comando puppet:no encontrado, ejecute source /etc/profile.d/puppet-agent.sh en la terminal o cierre sesión en la sesión actual y vuelva a iniciar sesión.
Firmar certificado de nodo de agente en el servidor maestro
Debemos aprobar una solicitud de certificado proveniente de cada nodo. Los nodos de agente solicitarán certificados por primera vez si intentan ejecutarse.
Ejecute el siguiente comando en el nodo del agente para realizar una conexión inicial. Puede ignorar las advertencias/errores.
puppet agent -t
Inicie sesión en el servidor Pupper y ejecute el siguiente comando para ver las solicitudes pendientes.
puppetserver ca list
Output: Requested Certificates: client.itzgeek.local (SHA256) 06:D8:8E:AE:CA:0B:B1:E7:90:B5:B9:1B:75:3C:95:69:D8:EF:27:0A:5D:CC:45:BB:15:34:64:D2:6B:2C:CA:98
Ejecute el comando de firma de certificado de marioneta para firmar una solicitud.
puppetserver ca sign --certname client.itzgeek.local
Output: Successfully signed certificate request for client.itzgeek.local
El servidor Puppet ahora puede comunicarse con la máquina cliente y controlar el nodo.
Si tiene varias solicitudes de firma de nodos, puede firmar todas las solicitudes en un solo comando.
puppetserver ca sign --all
A veces, es posible que deba revocar el certificado de un nodo en particular para volver a leerlo.
Reemplace
puppetserver ca revoke --certname AGENT_NAME
Puede enumerar todas las solicitudes firmadas y sin firmar con el siguiente comando.
puppetserver ca list --all
Output: Signed Certificates: puppetserver.itzgeek.local (SHA256) E6:2C:6C:1E:9B:C6:AA:D9:84:09:F3:67:45:1B:36:C6:1F:FB:46:5F:92:64:37:19:E3:74:0C:0D:29:D5:C5:F6 alt names: ["DNS:puppetserver.itzgeek.local", "DNS:puppetserver", "DNS:puppetserver.itzgeek.local"] authorization extensions: [pp_cli_auth: true] client.itzgeek.local (SHA256) EF:D8:1A:F2:E9:56:A3:1F:DA:A9:8D:9B:71:02:D8:52:F1:44:98:92:A7:5F:DE:FC:5F:55:37:97:EC:9C:9A:96
Verificar cliente de Puppet
Una vez que Puppet Server haya firmado su certificado de cliente, ejecute el siguiente comando en la máquina del cliente para probarlo.
puppet agent --test
Output: Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1591351483' Notice: Applied catalog in 0.01 seconds
Conclusión
Ese es Al. Espero que haya aprendido a instalar Puppet en CentOS 8/RHEL 8. Como lectura adicional, aprenda a crear un archivo de manifiesto simple para crear un archivo y un directorio en el nodo del cliente. Comparta sus comentarios en la sección de comentarios.