GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Puppet Server y Agent en Debian 11

Puppet es una herramienta de automatización y administración de configuración centralizada. DevOps crea una gestión de configuración para implementar servidores y aplicaciones, y toda la configuración para la automatización se almacena en el "Servidor Puppet" central. Después de eso, los nodos "Agente" extraerán una nueva configuración del "Servidor Puppet" y aplicarán el estado definido.

Todas las conexiones entre los nodos "Puppet Server" y "Agente" se cifran de forma predeterminada mediante SSL /certificado TLS. Puppet usa lenguaje específico de dominio (DSL) para describir la configuración del sistema y es similar a la sintaxis de Ruby.

En esta guía, instalará y configurará el servidor y el agente de Puppet en Debian 11 Bullseye. Instalará el servidor de Puppet en el nombre de host del servidor 'puppet-server' y el agente de Puppet en el servidor con el nombre de host 'agent'. Al final, creará los primeros manifiestos de marionetas para instalar la pila LEMP básica en el nodo 'agente'.

Requisito previo

  • Necesitará dos servidores Debian 11 diferentes.
    • El 'servidor de marionetas ' con dirección IP '192.168.5.100 ' y el fqdn 'puppet-server.localdomainl.lan '.
    • El 'agente ' nodo con la dirección IP '192.168.5.150 ' y el fqdn 'agent.localdomain.lan '.
  • Además, necesitará el usuario root o un usuario con privilegios de root/sudo.

Configuración de FQDN

Primero, configurará el nombre de dominio completo (FQDN) y el archivo '/etc/hosts' tanto en 'puppet-server' como en 'agent'. Esto garantizará que ambos servidores puedan comunicarse con el nombre de dominio local.

Para configurar FQDN, ejecute 'hostnamectl ' comando a continuación.

Ejecute el siguiente comando para configurar el fqdn 'puppet-server.localdomain.lan ' en el 'servidor de marionetas '.

hostnamectl set-hostname puppet-server.localdomain.lan

Ejecute el siguiente comando para configurar el fqdn 'agent.localdomain.lan ' en el 'agente ' nodo.

hostnamectl set-hostname agent.localdomain.lan

A continuación, edite el archivo '/etc/hosts ' archivo usando el editor vim como se muestra a continuación.

sudo vim /etc/hosts

Copie y pegue la siguiente configuración.

192.168.5.100   puppet-server.localdomain.lan
192.168.5.150   agent.localdomain.lan

Guarde el archivo y salga.

Finalmente, ejecute el 'ping ' a continuación para verificar la conexión entre el 'puppet-server ' y 'agente '.

ping puppet-server.localdomain.lan -c3
ping agent.localdomain.lan -c3

Si su configuración es correcta, verá el siguiente resultado. El 'puppet-server.localdomain.lan ' se resuelve en el servidor '192.168.5.100 ', y el 'agent.localdomain.lan ' se resuelve en el nodo de agente '192.168.5.150 '.

Agregar depósito de marionetas

De forma predeterminada, Puppelabs proporciona paquetes de repositorio para diferentes distribuciones de Linux, incluido el último Debian 11 Bullseye. En este paso, agregará e instalará el repositorio de Puppet tanto en 'puppet-server' como en 'agent'. Al momento de escribir este artículo, la última versión de Puppet es v7.x.

Descargue el paquete del repositorio usando 'wget ' comando a continuación.

wget https://apt.puppet.com/puppet7-release-bullseye.deb

A continuación, instale el archivo deb 'puppet7-release-bullseye.deb ' usando el 'dpkg ' comando a continuación.

sudo dpkg -i puppet7-release-bullseye.deb

Una vez completada la instalación, ejecute 'apt ' a continuación para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Ahora está listo para instalar paquetes de Puppet.

Instalando el Servidor Puppet

En este paso, instalará el paquete del servidor Puppet en el 'servidor-puppet'. Al momento de escribir este artículo, la última versión de Puppet es v7.

Para instalar Puppet Server, ejecute el siguiente comando apt. Este comando también instaló automáticamente otros paquetes como Java OpenJDK.

sudo apt install puppetserver

Escriba 'Y ' para confirmar la instalación.

Una vez completada la instalación, deberá cargar el entorno bash para Puppet Server.

De forma predeterminada, Puppet almacena su archivo binario en '/opt/puppetlabs/bin 'directorio. Ejecute el siguiente comando para aplicar el nuevo '$PATH ' variable de entorno para Puppet Server.

source /etc/profile.d/puppet-agent.sh
echo $PATH

Opcionalmente, también puede aplicar el '$PATH ' variable de entorno ejecutando el siguiente comando.

echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc

Ahora verifique el '$PATH ' variable de entorno usando el siguiente comando. Asegúrese de que el directorio '/opt/puppetlabs/bin ' está en la lista de '$PATH ' variable de entorno.

echo $PATH

Después de eso, puede ejecutar el 'puppetserver ' comando normalmente. A continuación puede consultar la versión de Puppet.

puppetserver -v

Debería obtener un resultado similar a la captura de pantalla a continuación.

A continuación, edite la configuración del servidor Puppet '/etc/default/puppetserver' usando el editor vim.

sudo vim /etc/default/puppetserver

Cambie la asignación máxima de memoria para Puppet Server. Depende de la memoria de su sistema. En esta guía, tenemos 2 GB de memoria y asignaremos 1 GB para el servidor Puppet. Y usaremos la siguiente configuración.

JAVA_ARGS="-Xms1g -Xmx1g"

Guarde el archivo de configuración y salga.

A continuación, vuelva a cargar systemd manager para aplicar el nuevo archivo de servicio de Puppet.

sudo systemctl daemon-reload

Luego inicie y habilite el 'puppetserver ' servicio usando el siguiente comando.

sudo systemctl start enable --now puppetserver

El servicio 'servidor de marionetas ' debería estar en funcionamiento. Ejecute el siguiente comando para verificar el 'puppetserver '.

sudo systemctl status puppetserver

Debería ver un resultado similar a la captura de pantalla a continuación.

Además, si está utilizando un firewall UFW en su sistema, asegúrese de abrir el puerto '8140 ' que será utilizado por Puppet Server.

Ejecute el siguiente comando para aliar cualquier conexión entrante de la subred local '192.168.5.0/24 ' al Puppet Server en el puerto '8140 '.

sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140
sudo ufw status

A continuación se muestran las reglas actuales del cortafuegos de UFW que debería ver.

Configuración del servidor de marionetas

En este paso, editará la configuración de Puppet Server. Y esto se puede hacer editando la configuración de Puppet directamente o generando la configuración usando el 'puppet ' línea de comandos.

Ejecute los comandos 'títeres' a continuación para configurar el servidor de títeres. Esto configurará el nombre de dominio del servidor Puppet predeterminado. y el intervalo de ejecución en el 'principal ' y el entorno y dns_alt_names en la sección 'servidor '.

puppet config set server puppet-server.localdomain.lan --section main
puppet config set runinterval 1h --section main

puppet config set environment production --section server
puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan --section server

Ahora compruebe la configuración del servidor de marionetas '/etc/puppetlabs/puppet/puppet.conf ' usando el 'gato ' comando a continuación.

cat /etc/puppetlabs/puppet/puppet.conf

Debería ver la configuración del servidor de marionetas como se muestra a continuación.

Por último, reinicie el servicio 'puppetserver ' para aplicar una nueva configuración ejecutando 'systemctl ' comando a continuación.

sudo systemctl restart puppetserver

En este punto, ha completado la instalación y configuración de Puppet Server.

Instalar y configurar Puppet Agent

En este paso, instalará y configurará Puppet Agent en la máquina cliente 'agent '.

Antes de instalar Puppet Agent, asegúrese de haber completado la configuración de FQDN y agregado el repositorio de Puppet.

Ahora instalemos y configuremos Puppet Agent.

Instale el paquete 'puppet-agent ' usando el comando apt a continuación.

sudo apt install puppet-agent

Una vez completada la instalación, ejecute el siguiente comando para iniciar y habilitar el servicio Puppet.

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

Debería ver un resultado similar a la captura de pantalla a continuación.

A continuación, configurará el '$PATH ' variable de entorno para agregar la ruta binaria de Puppet '/opt/puppetlabs/bin/ '. Al hacer esto, le permite ejecutar el 'puppet ' comando directamente sin la ruta completa del archivo binario.

source /etc/profile.d/puppet-agent.sh
echo $PATH

Otra forma de hacerlo es agregando un nuevo '$PATH ' variable de entorno a '~/.bashrc ' configuración usando el siguiente comando.

echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc

Ahora verifique el '$PATH ' configuración de la variable de entorno usando el siguiente comando.

echo $PATH

Debería ver la ruta binaria de Puppet '/opt/puppetlabs/bin ' se agrega a '$PATH ' variable de entorno.

Registro de Puppet Agent en el servidor de Puppet

Después de instalar Puppet Agent, ahora configurará Puppet Agent para registrarlo en el servidor principal de Puppet.

Primero, asegúrese de que se pueda acceder al nombre de dominio completo del servidor de Puppet desde el 'agente ' máquina. Pruébelo usando el 'ping ' comando a continuación.

ping puppet-server.localdomain.lan -c3

A continuación, ejecute los siguientes comandos para configurar Puppet Agent. Esto definirá el nombre de dominio del servidor Puppet y servidor_ca en el 'agente ' sección.

puppet config set server puppet-server.localdomain.lan --section agent
puppet config set ca_server puppet-server.localdomain.lan --section agent

Verifique la configuración de Puppet generada en el archivo '/etc/puppetlabs/puppet/puppet.conf'.

cat /etc/puppetlabs/puppet/puppet.conf

Debería ver un resultado similar a la captura de pantalla a continuación.

Ahora, ejecute el siguiente comando para reiniciar el servicio Puppet y aplicar nuevos cambios. Luego verifique el servicio Puppet y asegúrese de que esté activo y ejecutándose.

sudo systemctl restart puppet
sudo systemctl status puppet

A continuación se muestra el resultado del estado del servicio Puppet.

A continuación, ejecute el siguiente comando para registrar el agente de Puppet en el servidor de Puppet. Este comando generará nuevos certificados TLS y creará nuevas solicitudes de firma de certificados para el servidor de Puppet.

puppet ssl bootstrap

Ahora muévase a la terminal del servidor de Puppet y ejecute el siguiente comando para verificar las solicitudes de firma de certificado, luego verifique la firma del certificado para el agente de Puppet 'agent.localdomain.lan '.

puppetserver ca list --all
puppetserver ca sign --certname agent.localdomain.lan

Debería ver un mensaje como 'Solicitud de certificado firmada con éxito... '.

A continuación, ejecute el siguiente comando para verificar la lista de certificados en Puppet Server.

puppetserver ca list-all

Debería ver dos certificados diferentes, el certificado para Puppet Server y Puppet Agent.

Ahora muévase nuevamente a la terminal de Puppet Agent y debería ver mensajes como 'Aviso:Inicialización de SSL completada ', lo que significa que las solicitudes de firma del certificado se completaron con éxito.

En este punto, está listo para crear un nuevo primer manifiesto de Puppet.

Creación del primer manifiesto de marionetas

En este paso, creará un nuevo primer manifiesto de marionetas para instalar LEMP Stack (Nginx, MariaDB y PHP-FPM). Todos los manifiestos para el entorno de producción deben almacenarse en el directorio del servidor de marionetas '/etc/puppetlabs/code/environments/production/ '.

Cambie su directorio de trabajo actual a '/etc/puppetlabs/code/environments/production/ '.

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

A continuación, cree un nuevo directorio de diseño de manifiesto para LEMP Stack en 'módulos ' directorio.

mkdir -p modules/lemp/{manifests,files}

Mover a los 'módulos/lemp ' y cree un nuevo archivo de manifiesto de Puppet 'manifests/init.pp ' usando el editor vim/nano.

cd modules/lemp/
nano manifests/init.pp

Copie y pegue el siguiente lenguaje de sintaxis de marionetas para instalar LEMP Stack, asegúrese de que todos los servicios de LEMP Stack estén en funcionamiento y cree un nuevo archivo index.html personalizado.

class lemp {

    Package { ensure => 'installed' }
    $lemppackages = [ 'nginx', 'mariadb-server', 'php-fpm' ]
    package { $lemppackages: }

    Service { ensure => 'running', enable => 'true'}
    $lempsvc = [ 'nginx', 'mariadb', 'php7.4-fpm' ]
    service { $lempsvc: }

    file { '/var/www/html/index.html':
     ensure  => file,
     content => "<h1><center>Welcome to Nginx - Managed by Puppet</center></h1>",
     mode    => '0644',
   }

}

Guarde el archivo y salga.

A continuación, ejecute el siguiente comando para validar el archivo de manifiesto de Puppet 'init.pp' .

puppet parser validate init.pp

Si no vio ningún mensaje de salida, la configuración es correcta.

Ahora crea otra configuración 'manifests/site.pp ' usando el editor vim/nano.

cd /etc/puppetlabs/code/environments/production/
vim manifests/sites.pp

Defina el host de destino en 'agent.localdomain.lan ' y aplique el nuevo manifiesto de Puppet 'lemp '.

node 'agent.localdomain.lan' {
    include lemp
}

Guarde el archivo y salga.

Verifique nuevamente la configuración del manifiesto de Puppet usando el siguiente comando.

puppet parser validate site.pp

Verificación y aplicación de manifiestos de Puppet

Ahora ha creado un nuevo primer manifiesto de Puppet para implementar LEMP Stack. En este punto, el nodo del agente de Puppet sincronizará automáticamente todos los manifiestos con el servidor de Puppet y aplicará una nueva configuración de manifiesto.

Pero también, puede aplicar el manifiesto de Puppet manualmente desde la máquina de Puppet Agent.

Regrese al 'agente' del servidor de terminal y ejecute el siguiente comando para aplicar los manifiestos de Puppet manualmente.

puppet agent -t

Esto ejecutará el manifiesto de Puppet en la máquina de Puppet Agent e instalará LEMP Stack a través de los manifiestos de Puppet 'lemp '.

A continuación se muestra el resultado que obtendrá.

Ahora ejecute el siguiente comando para verificar cada servicio Nginx, MariaDB y PHP-FPM.

sudo systemctl status nginx
sudo systemctl status mariadb
sudo systemctl status php7.4-fpm

Debería ver que cada servicio está activo y ejecutándose.

Ahora abra su navegador web y escriba la dirección IP de su nodo de agente en la barra de direcciones. Y debería ver el archivo index.html personalizado a continuación.

Ahora ha aplicado con éxito la implementación de LEMP Stack en la máquina del agente mediante los manifiestos de Puppet.

Conclusión

¡Felicidades! Ahora ha instalado con éxito Puppet Server and Agent en Debian 11 Bullseye. Además, aprendió a crear los primeros manifiestos de Puppet para instalar LEMP Stack.

OEn el siguiente paso, puede ser interesante configurar otro nodo y crear un manifiesto de Puppet más complejo para sus implementaciones.


Debian
  1. Cómo instalar y configurar OpenVPN Server en Debian 10

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

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

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

  5. Cómo instalar ProFTPD en Debian 8

Cómo instalar MySQL 8 en Debian 10

Cómo instalar Todoman en el servidor Debian 11

Cómo instalar y configurar el servidor web Apache en Debian 11

Cómo instalar FastPanel en Debian 11

Cómo instalar I2P en el servidor Debian:

Cómo instalar y habilitar el servidor SSH en Debian 10