Cómo configurar Puppet Master y el Agente en CentOS 8

Puppet es una herramienta de gestión de la configuración y un marco de automatización de servidores de código abierto. Puppet puede ejecutarse en sistemas operativos tipo Unix, así como en sistemas Microsoft Windows. Te permite gestionar y realizar tareas administrativas y la configuración de cientos de sistemas desde un servidor maestro.

En este tutorial, te enseñaré a instalar Puppet en CentOS 8. Instalaré y configuraré un servidor CentOS 8 como «maestro» de Puppet, y el otro como «agente».

Requisitos previos

  • 2 o más servidores CentOS 8
  • Privilegios de root

Qué vamos a hacer

  • Preinstalación de Puppet
  • Instalar y configurar el servidor Puppet
  • Instalar y configurar el agente de Puppet
  • Verificar la configuración del Agente Puppet
  • Crear el primer manifiesto de Puppet

Paso 1 – Preinstalación de Puppet

En este primer paso, vamos a preparar los servidores maestro y agente para la instalación de Puppet. Vamos a configurar los hosts y el FQDN del servidor, configurar el servidor NTP y añadir el repositorio de puppet para el servidor CentOS 8.

Configurar los nombres de host

En primer lugar, vamos a configurar los hosts y el FQDN de ambos servidores. El puppet master tendrá un nombre de host ‘master’ con el FQDN ‘master.hakase-labs.io’, y el agente tendrá el nombre de host ‘agent01’ con el FQDN ‘agent01.hakase-labs.io’.

Configura el nombre de host utilizando el comando ‘hostnamectl’ que aparece a continuación.

hostnamectl set-hostname hostname

Después, edita el archivo ‘/etc/hosts’ para configurar el servidor FQDN.

vim /etc/hosts

Cambia la dirección IP y el nombre de dominio por los tuyos y pégalos en él.

10.5.5.21   master.hakase-labs.io   master
10.5.5.22   agent01.hakase-labs.io  agent01

Guarda y cierra.

Ahora reinicia el servicio hostnamed para aplicar un nuevo nombre de host y FQDN.

systemctl restart systemd-hostnamed

Y después, comprueba el nombre de host y el FQDN con el siguiente comando.

hostname
hostname -f

Y obtendrás que el nuevo nombre de host y el FQDN han sido configurados y aplicados al sistema.

Establece el nombre del servidor

Configurar el servidor NTP

Para el servidor NTP, vamos a utilizar «chrony» para nuestros servidores.

Instala chrony utilizando el comando dnf que aparece a continuación.

dnf install chrony

Después, edita la configuración de chrony ‘/etc/chrony.conf’ utilizando el editor vim.

vim /etc/chrony.conf

Ahora cambia el pool de servidores por el pool más cercano de tu país. Puedes comprobar el pool NTP disponible utilizando el‘https://www.pool.ntp.org/zone/COUNTRYID‘.

Copia todos los servidores NTP disponibles de tu país y pégalos en el archivo ‘chrony.conf’ como se indica a continuación.

server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst
server 2.id.pool.ntp.org iburst
server 3.id.pool.ntp.org iburst

Guarda y cierra.

Ahora inicia el servicio chronyd y añádelo al tiempo de arranque.

systemctl start chronyd
systemctl enable chronyd

La configuración del servidor NTP se ha completado.

Configurar la fecha y la hora

Añadir el repositorio Puppet para CentOS 8

Para el repositorio Puppet del servidor CentOS 8, puedes instalarlo manualmente utilizando el comando rpm como se indica a continuación.

sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm

Después, comprueba todos los repositorios disponibles en el sistema utilizando el comando dnf que aparece a continuación.

dnf repolist

Y obtendrás que el repositorio de puppet se ha añadido al sistema CentOS 8.

Añade el repositorio de títeres

Desactivar SELinux

Para desactivar SELinux, puedes editar la configuración ‘/etc/sysconfig/selinux’ utilizando el editor vim.

vim /etc/sysconfig/selinux

Ahora cambia la configuración del valor ‘SELINUX’ a «disabled».

SELINUX=disabled

Guarda y cierra, y luego reinicia el servidor.

sudo reboot

Una vez que hayas entrado de nuevo, comprueba el estado de SELinux con el siguiente comando.

sestatus

Y obtendrás el estado de SELinux deshabilitado.

Paso 2 – Instalar y configurar Puppetserver

En este paso, vamos a instalar y configurar el puppetserver en el nodo maestro.

Instala el puppetserver utilizando el comando dnf que aparece a continuación.

sudo dnf install puppetserver

Después, tenemos que editar la «configuración init» de puppetserver y cambiar la asignación de memoria en función de la RAM que tengamos.

Edita la configuración init de puppetserver que se encuentra en ‘/etc/sysconfig/puppetserver’ utilizando el editor vim.

vim /etc/sysconfig/puppetserver

Ahora cambia la configuración ‘JAVA_ARGS’ para la asignación de memoria en función de tu RAM.

JAVA_ARGS="-Xms1g -Xmx1g ...."

Guarda y cierra.

A continuación, ve al directorio ‘/etc/puppetlabs’ y edita el archivo de configuración de puppet ‘puppet.conf’.

cd /etc/puppetlabs/
vim puppet/puppet.conf

En la configuración maestra, define los nombres alternativos DNS con el FQDN del servidor maestro.

[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....

Después, define la configuración del servidor principal de puppet como se indica a continuación.

[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

Guarda y cierra.

Ahora añade el servicio puppetserver al tiempo de arranque e inicia el servicio.

systemctl enable puppetserver
systemctl start puppetserver

El servicio puppetserver está en marcha en el servidor CentOS 8 con el puerto TCP por defecto ‘8140’.

Añade el puerto ‘8140’ de puppetserver al firewalld mediante el siguiente comando.

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

Y como resultado, la instalación y configuración del puppet master se ha completado con éxito.

Configurar el cortafuegos

Paso 3 – Instalar y configurar el agente de Puppet

Después de instalar el servidor Puppet master ‘master.hakase-labs.io’, vamos a instalar un agente puppet en el servidor ‘agent01’.

Accede al servidor ‘agent01’ e instala el paquete puppet-agent mediante el comando dnf que aparece a continuación.

sudo dnf install puppet-agent

Después, ve al directorio ‘/etc/puppetlabs’ y edita el archivo de configuración ‘puppet.conf’ utilizando el editor vim.

cd /etc/puppetlabs/
vim puppet/puppet.conf

Cambia la configuración de ‘certname’ y ‘server’ por la tuya propia y pégala en la configuración.

[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

Guarda y cierra.

A continuación, inicia el servicio puppet y registra el agente Puppet en el servidor maestro utilizando el siguiente comando.

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

Y obtendrás el resultado que se muestra a continuación.

Iniciar el servicio de marionetas

El agente de Puppet ya está en marcha y está intentando registrarse en el servidor maestro de Puppet.

Ahora vuelve al servidor maestro de Puppet y comprueba las solicitudes de certificados pendientes.

/opt/puppetlabs/bin/puppetserver ca list

Y obtendrás el certificado ‘agent01.hakase-labs.io’ en la lista.

Ahora firma el certificado ‘agent01’ utilizando el comando que aparece a continuación.

/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io

Y el agente puppet ya está registrado en el servidor maestro.

Registrar el agente marioneta

Paso 4 – Verificar la configuración del agente Puppet

Ahora verifica la configuración del agente de Puppet y prueba la conexión entre el agente de Puppet y el servidor maestro utilizando el siguiente comando.

/opt/puppetlabs/bin/puppet agent --test

Y obtendrás el resultado que se muestra a continuación.

Prueba del agente marioneta

El resultado es que el agente Puppet ha extraído la configuración del puppet master y la ha aplicado al servidor sin ningún error.

Paso 5 – Crear el primer manifiesto

En esta etapa, la instalación y la configuración de Puppet para el maestro y el agente se han completado.

Y para este paso, vamos a probar nuestra configuración creando el primer manifiesto de puppet para instalar el paquete httpd.

Ve al directorio ‘/etc/puppetlabs/code/environments/production/manifests’ y crea el primer archivo de manifiesto de puppet ‘httpd.pp’.

cd /etc/puppetlabs/code/
cd environments/production/manifests

vim httpd.pp

Pega la siguiente configuración.

node 'agent01.hakase-labs.io' {
    package { 'httpd':
        ensure  => "installed",
    }
    service { 'httpd':
        ensure => running,
    enable => true
    }
}

Guarda y cierra.

Crear Manifiesto

Ahora ve al nodo del agente Puppet ‘agento01’ y ejecuta el siguiente comando.

/opt/puppetlabs/bin/puppet agent --test

Y se te mostrará el resultado como se indica a continuación.

Prueba del agente marioneta

El agente de Puppet extrajo una nueva configuración del maestro de Puppet para instalar el paquete httpd e iniciar el servicio httpd.

En el nodo ‘agent01′, comprueba el estado del servicio httpd y comprueba el puerto HTTP ’80’

systemctl status httpd
netstat -plntu

Y obtendrás que el servicio httpd está funcionando en el servidor ‘agent01′ con el puerto HTTP ’80’ por defecto. El paquete httpd se ha instalado a través del manifiesto de puppet que hemos creado en la parte superior.

Comprobar el estado de httpd

Y como resultado, la instalación y configuración del maestro y del agente Puppet en el servidor CentOS 8 se ha completado con éxito.

Referencia

También te podría gustar...