Skip to main content

Installation de l'agent Puppet sur les nœuds clients

3.1 Installation sur EL9

# Installer le dépôt Puppet 7
sudo dnf install -y https://yum.puppet.com/puppet7-release-el-9.noarch.rpm

# Installer l'agent Puppet
sudo dnf install -y puppet-agent

# Ajouter Puppet au PATH
echo 'export PATH=/opt/puppetlabs/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

3.2 Configuration de l'agent Puppet

# Éditer la configuration Puppet
sudo vim /etc/puppetlabs/puppet/puppet.conf

Ajouter/modifier dans la section [main] :

[main]
certname = client.mondomaine.com
server = foreman.mondomaine.com
environment = production
runinterval = 30m

3.3 Configuration du fichier hosts sur le client   

sudo vim /etc/hosts

Ajouter (pointer vers le serveur HAProxy, pas Foreman) :

<IP_HAPROXY>  foreman.mondomaine.com foreman

Important : Les clients doivent pointer vers HAProxy, qui fait office de reverse proxy SSL/TLS.

3.4 Premier run et signature du certificat

IMPORTANT : Le Puppet Server (port 8140) fonctionne directement sur le serveur Foreman, pas à travers HAProxy. Vous avez deux options :

Option 1 : Ajouter un frontend HAProxy pour Puppet (recommandé)

Sur le serveur HAProxy, ajouter à /etc/haproxy/haproxy.cfg :

#---------------------------------------------------------------------
# Frontend TCP - Puppet Server (port 8140)
#---------------------------------------------------------------------
frontend puppet_front
    bind *:8140
    mode tcp
    option tcplog
    default_backend puppet_backend

#---------------------------------------------------------------------
# Backend - Puppet Server
#---------------------------------------------------------------------
backend puppet_backend
    mode tcp
    balance roundrobin
    option tcp-check
    
    # Serveur Puppet
    server puppet1 <IP_SERVEUR_FOREMAN>:8140 check inter 5s rise 2 fall 3

Puis ouvrir le port sur le firewall HAProxy :

sudo firewall-cmd --permanent --add-port=8140/tcp
sudo firewall-cmd --reload
sudo systemctl reload haproxy

Option 2 : Accès direct au serveur Foreman pour Puppet

Si vous ne voulez pas passer par HAProxy pour Puppet, créer un enregistrement DNS séparé :

foreman.mondomaine.com     A    <IP_HAPROXY>      # Pour WebUI et Smart Proxy
puppet.mondomaine.com      A    <IP_SERVEUR_FOREMAN>  # Pour Puppet Server

Et modifier la configuration Puppet des clients :

[main]
certname = client.mondomaine.com
server = puppet.mondomaine.com  # Accès direct au serveur Foreman
ca_server = puppet.mondomaine.com
environment = production
runinterval = 30m

Premier run avec l'option 1 (HAProxy pour Puppet)

# Premier run pour générer le certificat
sudo /opt/puppetlabs/bin/puppet agent --test

# Sur le serveur Foreman, lister les certificats en attente
sudo puppetserver ca list

# Signer le certificat du client
sudo puppetserver ca sign --certname client.mondomaine.com

# Ou signer tous les certificats en attente
sudo puppetserver ca sign --all

# Relancer l'agent sur le client
sudo /opt/puppetlabs/bin/puppet agent --test

3.5 Activation du service Puppet

# Activer et démarrer le service
sudo systemctl enable puppet
sudo systemctl start puppet

# Vérifier le statut
sudo systemctl status puppet

3.6 Sur un client Debian/Ubuntu

# Télécharger et installer le dépôt Puppet
wget https://apt.puppet.com/puppet7-release-$(lsb_release -cs).deb
sudo dpkg -i puppet7-release-$(lsb_release -cs).deb
sudo apt update

# Installer l'agent
sudo apt install -y puppet-agent

# Suivre les mêmes étapes de configuration que pour Rocky Linux

3.7 Sur un client Windows

  1. Télécharger l'installateur depuis : https://downloads.puppetlabs.com/windows/puppet7/
  2. Exécuter l'installateur
  3. Pendant l'installation, spécifier foreman.mondomaine.com comme serveur Puppet
  4. Après installation, ouvrir PowerShell en administrateur :
# Premier run
puppet agent --test

# Activer le service
Set-Service -Name puppet -StartupType Automatic
Start-Service -Name puppet