GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Puppet 6.x en Ubuntu 18.04 / Ubuntu 16.04 y Debian 9

Cuando piensa en una herramienta de administración de configuración, la que aparece en su mente es Puppet. Puppet es una herramienta de administración de configuración de código abierto que lo ayuda a implementar y administrar las configuraciones de cientos de sistemas cliente desde la ubicación central.

Puppet facilita la vida del administrador del sistema al reducir el tiempo dedicado a tareas repetitivas y les permite trabajar en otros trabajos productivos, también asegura que toda la configuración 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 Server en Ubuntu 18.04/Ubuntu 16.04 y Debian 9.

Arquitectura

Agente / Maestro

En esta arquitectura, uno o más servidores ejecutan la aplicación del maestro de marionetas y la aplicación del agente de marionetas se ejecuta en nodos administrados (servidores de clientes), generalmente como un servicio en segundo plano.

El agente de marionetas enviará datos al titiritero y solicitará un catálogo en el intervalo particular. El titiritero compilará y devolverá el catálogo de ese nodo en particular, utilizando las fuentes de información a las que tiene acceso.

Arquitectura Independiente

En esta arquitectura, el nodo cliente ejecuta la aplicación de aplicación de marionetas, generalmente como un trabajo cron.

Medio ambiente

Aquí, configuraremos una marioneta en arquitectura maestro/agente y usaremos dos sistemas, como se menciona a continuación.

Titiritero

Nombre de host: servidor.itzgeek.local

Dirección IP: 192.168.1.10

Cliente títere

Nombre de host: cliente.itzgeek.local

Dirección IP: 192.168.1.20

Requisitos

Instalar NTP

El tiempo debe establecerse con precisión en un titiritero, ya que actuará como una autoridad de certificación para firmar los certificados que provienen de los nodos del cliente. Usaremos NTP para este propósito.

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

sudo apt update
sudo apt install -y ntp ntpdate
sudo ntpdate -u 0.ubuntu.pool.ntp.org

Zona horaria

Asegúrese de que todos los nodos estén en la misma zona horaria usando.

date

Salida:

Tue Sep 4 22:28:34 EDT 2018

Si hay alguna discrepancia, cámbiela en consecuencia. Enumere las zonas horarias disponibles.

timedatectl list-timezones

Configure la zona horaria con el siguiente comando.

sudo timedatectl set-timezone America/New_York

DNS

El agente de Puppet usa el nombre de host para comunicarse con el servidor de Puppet. Por lo tanto, asegúrese de que el nodo del agente pueda resolver el nombre de host del Puppet Server. O configura /etc/hosts archivo o servidor DNS.

Archivo /etc/hosts:

sudo nano /etc/hosts

Agregue una entrada de host similar a la siguiente línea.

192.168.1.10 server.itzgeek.local server

Configurar repositorio de PuppetLabs

Para instalar el maestro/agente de títeres, necesitaríamos configurar un repositorio de títeres en todos los nodos.

### Ubuntu 18.04 ###

wget https://apt.puppetlabs.com/puppet6-release-bionic.deb
sudo dpkg -i puppet6-release-bionic.deb
sudo apt update

### Ubuntu 16.04 ###

wget https://apt.puppetlabs.com/puppet6-release-xenial.deb
sudo dpkg -i puppet6-release-xenial.deb
sudo apt update

### Debian 9 ###

wget https://apt.puppetlabs.com/puppet6-release-stretch.deb
sudo dpkg -i puppet6-release-stretch.deb
sudo apt update

En Ubuntu 18.04, habilite el repositorio del universo, que contiene los paquetes necesarios para Puppet Server.

Instalar servidor de marionetas

Puppet Server es el software de servidor que se ejecuta en el nodo de Puppet Master. Instale el servidor Puppet usando el siguiente comando.

sudo apt 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 (opcional)

De forma predeterminada, Puppet Server JVM está configurado para usar 2 GB de RAM. Siempre puede personalizar el uso de la memoria según la cantidad de memoria que tenga 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.

sudo nano /etc/default/puppetserver

Cambie el valor que se muestra a continuación.

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"

Configuración de marionetas

Configuraciones simples

El servidor de marionetas no requiere ninguna configuración y simplemente puede iniciar el servicio del servidor de marionetas. Utilizará la configuración predeterminada.

Por ejemplo:dns_alt_names (títere, ) .

Puppet tomará el nombre de host de su sistema y la marioneta como nombres alternativos de DNS para Puppet Server. Por lo tanto, necesitaría usar server= o server=puppet en el archivo de configuración del agente de títeres.

Configuraciones avanzadas (opcional)

Aquí, voy a modificar la configuración del servidor de marionetas para nuestros requisitos.

sudo nano /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 = 15m

Iniciar servidor de marionetas

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

sudo /opt/puppetlabs/bin/puppetserver ca setup

Salida:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca

Inicie y habilite el servidor de marionetas.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

Instalar agente de marionetas

Configure el repositorio de Puppet en su nodo de agente como se muestra anteriormente y luego instale el agente de Puppet usando el siguiente comando.

sudo apt install -y puppet-agent

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

sudo nano /etc/puppetlabs/puppet/puppet.conf
Establecer servidor valor según su nombre de host maestro y certname como el nombre de host de su cliente. En mi caso, el servidor es server.itzgeek.local y certname es client.itzgeek.local.
[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 15m

Puede cambiar el valor de runinterval depende del requerimiento. Esto controla cuánto tiempo debe esperar un agente entre las dos solicitudes de catálogo.

Puede establecer el valor en segundos (30s o 30) o en minutos (30m) o en horas (1hr).

Inicie el agente de marionetas en el nodo y haga que se inicie automáticamente al arrancar el sistema.

sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

Obtendría un resultado como el siguiente.

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
 ensure => 'running',
 enable => 'true',
}

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 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.

sudo /opt/puppetlabs/bin/puppetserver ca list

Salida:

Requested Certificates:
    client.itzgeek.local   (SHA256)  07:B1:57:5B:DE:AF:9F:4A:DF:4A:D1:CD:C4:2A:F9:9F:D9:76:CD:C5:F1:60:09:9C:B4:BA:76:D6:7B:3C:6F:0D

Ejecute el siguiente comando para firmar una solicitud.

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.itzgeek.local

Salida:

Successfully signed certificate request for client.itzgeek.local

Para firmar todas las solicitudes de firma de certificados en un solo comando.

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

En algunos casos, es posible que deba revocar el certificado de un nodo en particular para volver a leerlo. Reemplace el con el nombre de host de su cliente.

sudo /opt/puppetlabs/bin/puppetserver ca revoke --certname <AGENT_NAME>

Enumere todas las solicitudes firmadas y sin firmar. Deberías ejecutarlo en el servidor maestro.

sudo /opt/puppetlabs/bin/puppetserver ca list --all

Salida:

Signed Certificates:
    server.itzgeek.local   (SHA256)  E5:A4:93:45:EF:82:3B:FF:6E:36:D2:9A:F0:75:15:67:94:33:06:2F:84:9F:D1:45:CE:C6:1C:86:D4:57:B8:25    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
    client.itzgeek.local   (SHA256)  AB:3B:F0:D0:62:69:50:DD:50:45:CE:AD:A5:2C:4F:9E:EB:19:D6:C6:9C:34:A3:C5:CD:84:8F:BA:50:04:4A:D0

Verificar agente títere

Una vez que el maestro de Puppet haya firmado su certificado de cliente, ejecute el siguiente comando en la máquina del cliente para probarlo.

sudo /opt/puppetlabs/bin/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 '1558888335'
Notice: Applied catalog in 0.02 seconds

Crear 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 el manifiesto básico para crear un directorio y un archivo en la máquina cliente.

El archivo de manifiesto principal de la marioneta se encuentra en /etc/puppetlabs/code/environments/production/manifests directorio. Cree un nuevo archivo de manifiesto.

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

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

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

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

sudo /opt/puppetlabs/bin/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 '1558888460'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetdir]/ensure: created
Notice: Applied catalog in 0.16 seconds

Verifique que el directorio se haya creado en el nodo del cliente.

ls -ld /tmp/puppetdir/

Salida:

drwxr-xr-x 2 root root 4096 May 26 22:03 /tmp/puppetdir/

Escribamos un manifiesto para crear un archivo con contenido.

node 'client.itzgeek.local' { # Applies only to mentioned node. If nothing mentioned, applies to all.
      file { '/tmp/puppetfile': # 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" # Content of the file
           }
}

Puede ir a la máquina cliente y recuperar el catálogo como se muestra en el ejemplo anterior o esperar 15 minutos para aplicar automáticamente el catálogo.

Conclusión

Espero que esta publicación le haya ayudado a instalar Puppet Server en Ubuntu 18.04/Ubuntu 16.04 y Debian 9. Comparta sus comentarios en la sección de comentarios.


Debian
  1. Cómo instalar el servidor Redis en Debian 11

  2. Cómo instalar Puppet 6.x en Ubuntu 18.04 / Ubuntu 16.04 y Debian 9

  3. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

  4. Cómo instalar ProFTPD en Debian 8

  5. Cómo instalar el servidor MySQL en Debian 9

Cómo instalar FastPanel en Debian 11

Cómo instalar I2P en el servidor Debian:

Cómo instalar VNC en Debian 10

Cómo instalar el servidor VNC en Debian 11

Cómo instalar Mongoku en Ubuntu 20.04 / Debian 11

¿Cómo instalar ODBC en Ubuntu 20.04 / Debian 11?