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