GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Puppet 6.x en CentOS 7 / RHEL 7

Puppet es una herramienta de administración de configuración de código abierto que lo ayuda a administrar las configuraciones de cientos de sistemas cliente desde la ubicación central.

Puppet facilita la vida del administrador al reducir el tiempo dedicado a tareas repetitivas y les permite concentrarse en otros trabajos, también asegura que la configuración implementada sea consistente en toda la infraestructura.

Puppet está disponible para sistemas informáticos basados ​​en Linux, Mac, BSD, Solaris y Windows, publicado bajo licencia Apache, escrito en lenguaje "Ruby".

Esta guía lo ayuda a instalar Puppet 6.x en CentOS 7 / RHEL 7.

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.

La Arquitectura Independiente

En esta arquitectura, cada nodo administrado tiene su copia de la información de configuración y compila su catálogo. Ejecuta la aplicación de aplicación de marionetas como un trabajo cron.

Medio ambiente

Aquí, configuraremos una marioneta en la arquitectura del servidor/agente.

Titiritero

Nombre de host: servidor.itzgeek.local
Dirección IP: 192.168.1.10
Sistema operativo: Cent OS 7.6

Cliente títere

Nombre de host: cliente.itzgeek.local
Dirección IP: 192.168.1.20
Sistema operativo: Cent OS 7.6

Requisitos

Instalar NTP

Los tiempos de los nodos maestro y cliente deben estar sincronizados con precisión con los servidores de tiempo ascendentes porque el maestro del servidor maestro de Puppet actuará como la autoridad de certificación.

(Si la hora es incorrecta, podría emitir por error certificados de agente de una fecha pasada o futura distante, que otros nodos considerarán como vencidos).

Instale el paquete NTP y realice la sincronización de tiempo con los servidores NTP ascendentes.

yum -y install ntpdate
ntpdate 0.centos.pool.ntp.org
Asegúrese de que todos los nodos estén en la misma zona horaria usando fecha dominio. Si hay alguna discrepancia, cámbiela en consecuencia.

LEER :Cómo cambiar la zona horaria en CentOS 7/RHEL 7

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 agente puedan resolver el nombre de host de Puppet Server con la ayuda de /etc/hosts archivo o servidor DNS.

Configurar depósito de marionetas

Para instalar Puppet Server/Agents, necesitaríamos agregar un repositorio de Puppet en todos los nodos.

Configure el repositorio de Puppet tanto en el nodo maestro como en el agente.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm

Instalar servidor de marionetas

Puppet Server es el software de servidor que se ejecuta en el nodo de Puppet Master. Puppetmaster envía las configuraciones a los nodos administrados (puppet-agent).

Instale el servidor Puppet usando el siguiente comando.

yum install -y puppetserver

El servidor de marionetas ya está instalado, no inicie el servicio del servidor de marionetas todavía.

Configurar servidor de marionetas

Asignación de memoria

De forma predeterminada, Puppet Server JVM está configurado para usar 2 GB de memoria. Puede cambiarlo, depende de la cantidad de memoria disponible en su nodo maestro; asegúrese de que sea suficiente para administrar todos los nodos conectados a él.

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"

Servidor web integrado

Puppet Server utiliza un servidor web basado en Jetty integrado en el proceso JVM del servicio. No necesita configurar o habilitar el servidor web; funciona fuera de la caja. Funciona bien bajo cargas de nivel de producción.

La configuración del servidor web incorporado se puede modificar en webserver.conf. Es posible que deba editar este archivo si está utilizando una CA externa o ejecutando Puppet Server en un puerto no estándar.

Configuración de marionetas

Configuraciones simples

Puppet Server no requiere ninguna configuración. Simplemente puede iniciar el servicio del servidor Puppet. Utilizará la configuración predeterminada.

El nombre de host predeterminado del servidor de marionetas (dns_alt_names) es marioneta, por lo que debe usar server =marioneta en el archivo de configuración del agente de marionetas.

Si desea cambiar el nombre de host del maestro de marionetas, siga el procedimiento a continuación.

Configuraciones avanzadas (opcional)

Aquí, voy a modificar la configuración de Puppet Master para nuestros requisitos.

vi /etc/puppetlabs/puppet/puppet.conf

Coloque las siguientes líneas. Modifíquelo según su entorno.

[master]
dns_alt_names = server.itzgeek.local,server

[main]
certname = server.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

Iniciar servidor de marionetas

Genere una CA de firma raíz e intermedia para Puppet Server.

puppetserver ca setup

Salida:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca
Si 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

Puppet Master escucha en el puerto 8140, así que configure el firewall de tal manera que los nodos administrados puedan conectarse al maestro.

firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload

Instalar agente de marionetas

Instale el agente de marionetas en su cliente usando el siguiente comando.

yum install -y puppet-agent

El agente de marionetas también usa algunas de las configuraciones predeterminadas para conectarse al nodo principal. Sin embargo, necesitamos editar el archivo de configuración de la marioneta y configurar la información del maestro de marionetas.

Establecer servidor valor según su nombre de nodo maestro. En mi caso el servidor es server.itzgeek.local y nombre de certificado es el nombre de host de mi cliente (client.itzgeek.local ).
vi /etc/puppetlabs/puppet/puppet.conf

Establecer como a continuación.

[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

Puede cambiar el valor de runinterval depende del requerimiento. Puede establecer el valor en segundos (10 o 10s), minutos (10m) y horas (1h). Esta configuración controla cuánto tiempo debe esperar el agente entre las dos solicitudes de catálogo.

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

Salida:

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
  ensure => 'running',
  enable => 'true',
}
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

En una implementación de agente/maestro, un administrador debe aprobar una solicitud de certificado proveniente de cada nodo para que puedan obtener las configuraciones. Los nodos de agente solicitarán certificados por primera vez si intentan ejecutarse.

Inicie sesión en el servidor de Puppet Master y ejecute el siguiente comando para ver las solicitudes pendientes.

puppetserver ca list

Salida:

client.itzgeek.local   (SHA256)  A6:0E:93:51:FF:53:C8:FA:63:70:72:53:B6:1E:1B:A8:49:79:37:7E:57:00:02:AE:32:44:22:BE:97:F5:08:09

Ejecute el comando de firma de certificado de marioneta para firmar una solicitud.

puppetserver ca sign --certname client.itzgeek.local

Salida:

Successfully signed certificate request for client.itzgeek.local

El titiritero 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 agregarlo.

Reemplace con el nombre de host de su cliente.

puppetserver ca revoke --certname <AGENT_NAME>

Puede enumerar todas las solicitudes firmadas y sin firmar con el siguiente comando.

puppetserver ca list --all

Salida:

server.itzgeek.local   (SHA256)  6E:90:94:6F:31:4F:8C:2A:28:90:D5:C0:6D:71:18:65:5E:86:DE:1C:16:9C:7C:30:8F:BF:DA:87:2D:F7:2C:26    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
client.itzgeek.local   (SHA256)  A6:08:36:5C:DB:73:0D:16:BA:5B:0D:72:76:FD:C7:31:DD:87:6F:EC:D4:4F:7A:87:E9:4F:73:70:D0:09:6E:61

Verificar cliente de marionetas

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

Salida:

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 '1558878523'
Notice: Applied catalog in 0.03 seconds

Creando nuestro primer manifiesto

Manifest es un archivo de datos que contiene la configuración del cliente, escrito en el lenguaje declarativo de Puppet o un Ruby DSL. Esta sección cubre algunos manifiestos básicos para crear un directorio, así como un archivo en el nodo administrado.

El archivo de manifiesto principal de la marioneta se encuentra en /etc/puppetlabs/code/environments/production/manifests/site.pp.

vi /etc/puppetlabs/code/environments/production/manifests/site.pp

Ahora agregue las siguientes líneas al manifiesto para crear un directorio en el nodo administrado.

Si la variable de nodo no está configurada, este manifiesto se aplicará a todos los nodos conectados al titiritero.
node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppetesttdir': # Resource type file
 ensure => 'directory', # Create as a diectory
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0755', # Directory permissions
}
}

Ahora, ejecute el siguiente comando en el nodo del cliente para recuperar las configuraciones.

puppet agent --test

Salida:

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.itzgeek.local
Info: Applying configuration version '1472165498'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetesttdir]/ensure: created
Notice: Applied catalog in 0.03 seconds

Verifique que se haya creado el directorio en el nodo administrado.

[root@client ~]# ls -ld /tmp/puppetesttdir
drwxr-xr-x. 2 root root 6 May 26 09:57 /tmp/puppetesttdir

Hagamos la prueba una vez más escribiendo el manifiesto para crear un archivo con contenido.

node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppettestfile': # Resource type file
 ensure => 'present', # Make sure it exists
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0644', # File permissions
 content => "This File is created by Puppet Server"
}
}

Puede ir a la máquina cliente y recuperar el catálogo como se muestra en el ejemplo anterior o el agente de Puppet obtendrá periódicamente el manifiesto de Puppet Server según el intervalo de ejecución. estableció en el archivo de configuración.

Conclusión

Espero que haya aprendido a instalar Puppet Server y Agent en CentOS 7/RHEL 7. Además, aprendió a crear un archivo de manifiesto simple para crear un directorio en el nodo del cliente. Comparta sus comentarios en la sección de comentarios.


Cent OS
  1. Cómo instalar el servidor de correo postfix en RHEL 8 / CentOS 8

  2. Cómo instalar un servidor DNS en RHEL 8 / CentOS 8 Linux

  3. Cómo instalar Puppet en CentOS 8 / RHEL 8

  4. Cómo instalar Puppet en RHEL 8/CentOS 8

  5. CentOS / RHEL 7:Cómo instalar la GUI

Cómo instalar Zabbix Server 4.x en CentOS 6 / RHEL 6

Cómo instalar el servidor web Jetty en CentOS 7 / RHEL 7

Cómo instalar el servidor Zabbix 5.0/4.0 en CentOS 7/RHEL 7

Cómo instalar el servidor VNC en CentOS 8 / RHEL 8

Cómo instalar el servidor Zabbix 5.0/4.0 en CentOS 8/RHEL 8

Cómo instalar Puppet Server en CentOS 7