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

Instalar y configurar Puppet en CentOS 7 / RHEL 7

Este tutorial es para una versión antigua de Puppet Master, algunos enlaces están rotos y es posible que no funcionen como se esperaba. Una nueva versión está disponible aquí:Cómo instalar Puppet 4.x en CentOS 7 / RHEL 7.

Puppet es una herramienta de gestión de configuración gratuita y de código abierto que le ayuda a implementar y gestionar de forma centralizada las configuraciones de cientos de sistemas cliente. Está disponible para sistemas informáticos basados ​​en GNU/Linux, Mac, BSD, Solaris y Windows, publicado bajo Licencia Apache, escrito en lenguaje “Ruby”. Esta guía lo ayuda a instalar la marioneta en CentOS 7/RHEL 7.

Arquitectura de marionetas:

Agente / Maestro:

En esta arquitectura, uno o más servidores ejecutan la aplicación del maestro de marionetas, generalmente como una aplicación de Rack administrada por un servidor web (como Apache con Passenger) y la aplicación del agente de marionetas se ejecuta en los servidores del cliente, generalmente como un servicio en segundo plano.

Periódicamente, el agente titiritero enviará datos al titiritero y solicitará un catálogo. El maestro compilará y devolverá el catálogo de ese nodo, utilizando varias fuentes de información a las que tiene acceso.

La arquitectura independiente:

En esta arquitectura, los servidores cliente ejecutan la aplicación de aplicación de marionetas (combinación autónoma de las aplicaciones de agente de marionetas y maestro de marionetas), generalmente como una tarea programada o un trabajo cron.

Entorno:

Aquí, le mostraré cómo configurar una marioneta en la arquitectura maestro/agente. En este tutorial, usaré dos sistemas CentOS 7 como se menciona a continuación.

Titiritero:

Operating system : CentOS 7 Minimal
IP Address       : 192.168.12.10
HostName         : server.itzgeek.local

Cliente títere:

Operating System : CentOS 7 Minimal
IP Address       : 192.168.12.20
HostName         : client.itzgeek.local

Requisitos previos:

Configure el repositorio EPEL en CentOS 7 / RHEL 7.

Asegúrese de que su sistema (tanto el servidor de marionetas como el cliente) pueda resolver el nombre de host entre sí, use el archivo /etc/hosts o servidor DNS .

Para tener una configuración de títeres lista para producción, tenemos que usar apache con pasajero. Para obtener el pasajero, descargue y coloque el archivo de repositorio en /etc/yum.repos.d/

Nota:Solo en el servidor maestro.

[root@server ~]# curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo

Para instalar el maestro/agente de títeres, necesitaríamos configurar el repositorio de títeres en todos los nodos. Habilite el repositorio de los laboratorios de marionetas instalando por debajo de rpm.

Nota:ejecútelo en los nodos maestro y agente.

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm

Instalar y configurar Puppet en CentOS 7:

Ahora es el momento de instalar la marioneta. Instale el servidor de marionetas usando el siguiente comando.

[root@server ~]# yum -y install puppet-server

Como se dijo anteriormente, configuraremos la marioneta para la arquitectura maestro/agente. Entonces, este nodo actuará como un nodo maestro. Edite el archivo de configuración de la marioneta y modifique los dns_alt_names .

[root@server ~]# vi /etc/puppet/puppet.conf

[main]
dns_alt_names = server,server.itzgeek.local
certname = server.itzgeek.local

Si esta máquina es el único titiritero en su entorno, ejecute el siguiente comando para crear el certificado de titiritero.

[root@server ~]# puppet master --verbose --no-daemonize

Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): 81:C6:BB:8B:1D:71:4C:64:E1:13:54:1B:EC:CF:99:D8:85:90:D1:6C:E8:85:50:3E:03:41:BA:C5:47:A7:4C:E5
Notice: Signed certificate request for ca
Info: Creating a new certificate revocation list
Info: Creating a new SSL key for server.itzgeek.local
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for server.itzgeek.local
Info: Certificate Request fingerprint (SHA256): FF:BE:D4:9B:E4:12:83:79:AE:BE:50:17:76:5F:F5:CD:5F:53:EA:5D:AA:5D:87:9E:7C:C4:BC:1B:8A:C6:FA:5C
Notice: server.itzgeek.local has a waiting certificate request
Notice: Signed certificate request for server.itzgeek.local
Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/server.itzgeek.local.pem'
Notice: Removing file Puppet::SSL::CertificateRequest server.itzgeek.local at '/var/lib/puppet/ssl/certificate_requests/server.itzgeek.local.pem'
Notice: Starting Puppet master version 3.8.3

Una vez que reciba “Aviso:iniciando la versión maestra de Puppet “, presiona ctrl-C para matar el proceso.

Configurar un servidor web listo para producción:

Puppet viene con un servidor web básico de Puppet Master, pero no se puede usar para cargas de la vida real. Debemos configurar un servidor web de calidad de producción antes de comenzar a administrar nuestros nodos con Puppet.

[root@server ~]# yum -y install httpd httpd-devel mod_ssl ruby-devel rubygems gcc gcc-c++ pygpgme curl

Instale el módulo Passenger y apache.

[root@server ~]# yum install -y mod_passenger

Cree tres directorios para la aplicación (un directorio principal, un directorio "público" y un directorio "tmp" ), copie el archivo ext/rack/config.ru del código fuente de Puppet en el directorio principal y establezca la propiedad del archivo config.ru.

[root@server ~]# mkdir -p /usr/share/puppet/rack/puppetmasterd
[root@server ~]# mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/rack/puppetmasterd/tmp
[root@server ~]# cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/
[root@server ~]# chown puppet:puppet /usr/share/puppet/rack/puppetmasterd/config.ru

Agregue un host virtual para la marioneta creando el siguiente archivo de configuración.

[root@server ~]# vi /etc/httpd/conf.d/puppetmaster.conf

Agregue el contenido a continuación en el archivo de host virtual, cambie el verde entradas coloreadas según su entorno.

# you probably want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120

Listen 8140

<VirtualHost *:8140>
        SSLEngine on
        SSLProtocol             ALL -SSLv2 -SSLv3
        SSLCipherSuite          EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
        SSLHonorCipherOrder     on

        SSLCertificateFile      /var/lib/puppet/ssl/certs/server.itzgeek.local.pem
        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/server.itzgeek.local.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile   /var/lib/puppet/ssl/ca/ca_crt.pem
        # If Apache complains about invalid signatures on the CRL, you can try disabling
        # CRL checking by commenting the next line, but this is not recommended.
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
        # Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none
        # which effectively disables CRL checking; if you are using Apache 2.4+ you must
        # specify 'SSLCARevocationCheck chain' to actually use the CRL.
        # SSLCARevocationCheck chain
        SSLVerifyClient optional
        SSLVerifyDepth  1
        # The `ExportCertData` option is needed for agent certificate expiration warnings
        SSLOptions +StdEnvVars +ExportCertData

        # This header needs to be set if using a loadbalancer or proxy
        RequestHeader unset X-Forwarded-For

        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

         DocumentRoot /usr/share/puppet/rack/puppetmasterd/public
        RackBaseURI /
        <Directory /usr/share/puppet/rack/puppetmasterd/>
                Options None
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>        

Reinicie el servidor apache para que tenga un efecto de host virtual de marionetas, para hacerlo, ejecute el siguiente comando en la terminal.

[root@server ~]# systemctl restart  httpd.service

Deshabilite el servicio de marionetas y habilite el servidor apache para que se inicie automáticamente en el arranque del sistema.

[root@server ~]# systemctl disable puppet.service
[root@server ~]# systemctl enable httpd.service

Cortafuegos:

Puppet escucha en el puerto nº 8140; Configure las tablas de IP para permitirlo.

[root@server ~]# firewall-cmd --zone=public --add-port=8140/tcp --permanent
[root@server ~]# firewall-cmd --reload

Instalar Puppet en nodos de agente:

En su máquina cliente, instale el agente de marionetas usando el siguiente comando.

Nota:debe tener un repositorio de títeres configurado en los nodos del agente.

[root@client ~]# yum -y install puppet

Edite el archivo de configuración de marionetas y configure la información del maestro de marionetas en la estrofa del cliente.

Nota:Modifique el valor de "servidor" según su entorno. En mi caso, el servidor es “server.itzgeek.local”

[root@client ~]# vi /etc/puppet/puppet.conf

[agent]
server = server.itzgeek.local

Inicie la marioneta en el nodo del agente y haga que se inicie automáticamente al arrancar el sistema.

[root@client ~]# systemctl start  puppet.service
[root@client ~]# systemctl enable puppet.service

Obtendría los siguientes eventos en los registros.

Oct 21 05:46:45 client systemd: Starting Puppet agent...
Oct 21 05:46:46 client systemd: Started Puppet agent.
Oct 21 05:47:03 client systemd: Reloading.
Oct 21 05:49:10 client puppet-agent[2694]: Did not receive certificate

Firme el certificado del nodo del agente en el servidor maestro:

En una implementación de agente/maestro, un administrador debe aprobar una solicitud de certificado para cada nodo de agente antes de que ese nodo pueda obtener configuraciones. Los nodos de agente solicitarán certificados la primera vez que intenten ejecutarse.

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

[root@server ~]# puppet cert list

"client.itzgeek.local" (SHA256) D4:88:EC:C5:0A:F7:5D:4E:32:C5:B3:61:E0:51:7B:0C:CD:B3:49:9E:68:0B:E7:5D:75:19:1D:0B:92:8A:E7:C1

Ejecute el signo del certificado de marionetas para firmar una solicitud, o el signo del certificado de marionetas:todo para firmar todas las solicitudes pendientes.

[root@server ~]# puppet cert sign client.itzgeek.local

Notice: Signed certificate request for client.itzgeek.local
Notice: Removing file Puppet::SSL::CertificateRequest client.itzgeek.local at '/var/lib/puppet/ssl/ca/requests/client.itzgeek.local.pem'

Ejecute el siguiente comando en la máquina cliente para verificar el certificado

[root@client ~]# puppet agent -t

Info: Caching certificate for client.itzgeek.local
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for client.itzgeek.local
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.itzgeek.local
Info: Applying configuration version '1445401911'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.09 seconds

Eso es todo. Ahora, ha configurado con éxito el maestro de marionetas y un agente. Es hora de crear manifiestos (configuración del cliente). Estén atentos.

Este tutorial es para una versión anterior de Puppet Master, algunos enlaces están rotos y es posible que no funcionen como se esperaba. Una nueva versión está disponible aquí:Cómo instalar Puppet 4.x en CentOS 7 / RHEL 7.
Cent OS
  1. Instalar y configurar HAProxy en RHEL 8 / CentOS 8 Linux

  2. Cómo instalar y configurar R en el sistema RHEL 8/CentOS 8 Linux

  3. Instalar y configurar el servidor FTP en CentOS 7 / RHEL 7 – (vsftpfd)

  4. CentOS/RHEL 7:Cómo instalar y configurar telnet

  5. Cómo instalar y configurar Samba en CentOS/RHEL

Cómo instalar y configurar Nagios Core en CentOS 8 / RHEL 8

Cómo instalar y configurar el servidor VNC en CentOS 7 / RHEL 7

Instalar y configurar GlusterFS en CentOS 7/RHEL 7

Cómo instalar y configurar Jenkins en CentOS 8 / RHEL 8

Cómo instalar y configurar MariaDB en CentOS/RHEL 7

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