Puppet es una herramienta de administración de configuración de código abierto y un marco de automatización de servidores. Puppet puede ejecutarse en sistemas operativos similares a Unix, así como en los sistemas Microsoft Windows. Le permite administrar y realizar tareas administrativas y la configuración de cientos de sistemas desde un servidor maestro.
En este tutorial, le mostraré cómo instalar Puppet en CentOS 8. Instalaré y configuraré un servidor CentOS 8 como 'maestro' de títeres y el otro como 'agente'.
Requisitos previos
- 2 o más servidores CentOS 8
- Privilegios de raíz
Qué haremos:
- Preinstalación de marionetas
- Instalar y configurar el servidor Puppet
- Instalar y configurar Puppet Agent
- Verificar la configuración del agente títere
- Crear el primer manifiesto de marionetas
Paso 1:instalación previa de Puppet
En este primer paso, prepararemos los servidores maestro y agente para la instalación de la marioneta. Vamos a configurar hosts y FQDN del servidor, configurar el servidor NTP y agregar el repositorio de títeres para el servidor CentOS 8.
Configurar nombres de host
En primer lugar, configuraremos hosts y FQDN para ambos servidores. El titiritero 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'.
Configure el nombre de host usando el comando 'hostnamectl' a continuación.
hostnamectl set-hostname hostname
Después de eso, edite el archivo '/etc/hosts' para configurar el servidor FQDN.
vim /etc/hosts
Cambie la dirección IP y el nombre de dominio por los suyos propios y péguelos.
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
Guardar y cerrar.
Ahora reinicie el servicio con nombre de host para aplicar un nuevo nombre de host y FQDN.
systemctl restart systemd-hostnamed
Y después de eso, verifique el nombre de host y el FQDN usando el siguiente comando.
hostname
hostname -f
Y obtendrá un nuevo nombre de host y FQDN se ha configurado y aplicado al sistema.
Configurar servidor NTP
Para el servidor NTP, usaremos "chrony" para nuestros servidores.
Instale chrony usando el comando dnf a continuación.
dnf install chrony
Después de eso, edite la configuración de chrony '/etc/chrony.conf' usando el editor vim.
vim /etc/chrony.conf
Ahora cambie el servidor de la piscina con la piscina más cercana de su país. Puede verificar el NTP del grupo disponible usando 'https://www.pool.ntp.org/zone/COUNTRYID'.
Copie todos los servidores NTP disponibles de su país y péguelos en el archivo 'chrony.conf' como se muestra 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
Guardar y cerrar.
Ahora inicie el servicio chronyd y agréguelo al tiempo de arranque de inicio.
systemctl start chronyd
systemctl enable chronyd
La configuración del servidor NTP se ha completado.
Añadir depósito de marionetas para CentOS 8
Para el servidor CentOS 8 del repositorio de marionetas, puede instalarlo manualmente usando el comando rpm como se muestra a continuación.
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Después de eso, verifique todos los repositorios disponibles en el sistema usando el comando dnf a continuación.
dnf repolist
Y obtendrá que el repositorio de marionetas se ha agregado al sistema CentOS 8.
Deshabilitar SELinux
Para deshabilitar SELinux, puede editar la configuración '/etc/sysconfig/selinux' usando el editor vim.
vim /etc/sysconfig/selinux
Ahora cambie la configuración del valor 'SELINUX' a "deshabilitado".
SELINUX=disabled
Guarde y cierre, luego reinicie el servidor.
sudo reboot
Una vez que haya iniciado sesión nuevamente, verifique el estado de SELinux usando el siguiente comando.
sestatus
Y obtendrá el estado de SELinux deshabilitado.
Paso 2:instalar y configurar Puppetserver
En este paso, instalaremos y configuraremos el servidor de marionetas en el nodo principal.
Instale el servidor de marionetas usando el comando dnf a continuación.
sudo dnf install puppetserver
Después de eso, necesitamos editar la 'configuración de inicio' para el servidor de marionetas y cambiar la asignación de memoria dependiendo de la RAM que tengamos.
Edite la configuración de inicio de puppetserver que se encuentra en '/etc/sysconfig/puppetserver' usando el editor vim.
vim /etc/sysconfig/puppetserver
Ahora cambie la configuración de 'JAVA_ARGS' para la asignación de memoria según su RAM.
JAVA_ARGS="-Xms1g -Xmx1g ...."
Guardar y cerrar.
A continuación, vaya al directorio '/etc/puppetlabs' y edite el archivo de configuración de títeres 'puppet.conf'.
cd /etc/puppetlabs/
vim puppet/puppet.conf
En la configuración maestra, defina los nombres alternativos de DNS con el FQDN del servidor maestro.
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Después de eso, defina la configuración del servidor principal de la marioneta como se muestra a continuación.
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Guardar y cerrar.
Ahora agregue el servicio del servidor de marionetas al tiempo de arranque de inicio e inicie el servicio.
systemctl enable puppetserver
systemctl start puppetserver
El servidor de marionetas está funcionando en el servidor CentOS 8 con el puerto TCP predeterminado '8140'.
Agregue el puerto del servidor de marionetas '8140' al firewalld usando el siguiente comando.
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
Y como resultado, la instalación y configuración del maestro de marionetas se completó con éxito.
Paso 3:instalar y configurar Puppet Agent
Después de instalar el servidor maestro de Puppet 'master.hakase-labs.io', vamos a instalar un agente de títeres en el servidor 'agent01'.
Inicie sesión en el servidor 'agent01' e instale el paquete puppet-agent usando el comando dnf a continuación.
sudo dnf install puppet-agent
Después de eso, vaya al directorio '/etc/puppetlabs' y edite el archivo de configuración 'puppet.conf' usando el editor vim.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Cambie la configuración de 'certname' y 'server' por la suya propia y péguela en la configuración.
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Guardar y cerrar.
A continuación, inicie el servicio de títeres y registre el agente de títeres en el servidor maestro con el siguiente comando.
/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
Y obtendrá el resultado como se muestra a continuación.
El agente de marionetas ya está funcionando, está intentando registrarse en el servidor maestro de marionetas.
Ahora regrese al servidor maestro de Puppet y verifique las solicitudes de certificados pendientes.
/opt/puppetlabs/bin/puppetserver ca list
Y obtendrá el certificado 'agent01.hakase-labs.io' en la lista.
Ahora firme el certificado 'agent01' usando el siguiente comando.
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
Y el agente títere ahora se ha registrado en el servidor maestro.
Paso 4:verificar la configuración del agente de marionetas
Ahora verifique la configuración del agente de marionetas y pruebe la conexión entre el agente de marionetas y el maestro usando el siguiente comando.
/opt/puppetlabs/bin/puppet agent --test
Y obtendrá el resultado como se muestra a continuación.
Como resultado, el agente de Puppet extrajo la configuración de Puppet Master y la aplicó al servidor sin ningún error.
Paso 5:crear el primer manifiesto
En esta etapa, se ha completado la instalación y configuración de Puppet para maestro y agente.
Y para este paso, probaremos nuestra configuración creando el primer manifiesto de marionetas para instalar el paquete httpd.
Vaya al directorio '/etc/puppetlabs/code/environments/production/manifests' y cree el primer archivo de manifiesto de títeres 'httpd.pp'.
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
Pegue la siguiente configuración.
node 'agent01.hakase-labs.io' {
package { 'httpd':
ensure => "installed",
}
service { 'httpd':
ensure => running,
enable => true
}
}
Guardar y cerrar.
Ahora vaya al nodo del agente de Puppet 'agente01' y ejecute el siguiente comando.
/opt/puppetlabs/bin/puppet agent --test
Y se le mostrará el resultado de la siguiente manera.
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', verifique el estado del servicio httpd y verifique el puerto HTTP '80'
systemctl status httpd
netstat -plntu
Y obtendrá el servicio httpd funcionando en el servidor 'agent01' con el puerto HTTP predeterminado '80'. El paquete httpd se instaló a través del manifiesto de marionetas que creamos en la parte superior.
Y como resultado, la instalación y configuración del agente y maestro de Puppet en el servidor CentOS 8 se completó con éxito.