Ceci est une ancienne révision du document !


Puppet - Installation d'une solution d'orchestration

CréationNicolas THOREZ 2022/11/18 18:14

Un orchestrateur est un système permettant d'automatiser une installation. puppet en est un. Une fois configuré, il pourra envoyer les différentes configurations à ces clients à distance, procéder àdes installations de paquets, etc. De plus, les fichiers de configurations gérés par puppet sont protégés d'une modification non voulue. Ainsi, si un programme malveillant ou une erreur d'un utilisateur modifie un fichier de configuration alors le système remettra le fichier valide en place et redémarrera les services concernés au besoin.

Droits

Les différentes procédures suivantes nécessite des droits root. N'oubliez pas les sauvegardes avant toute action.

Réalisation

Ces procédures ont été réalisées sur des Debian 11, hébergées sur des Proxmox 7.
  • On commence par ajouter le dépôt nécessaire à l'installation :

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

  • On met à jour nos sources et on installe le paquet :

apt update && apt install -y puppetserver

Mémoire

puppet, ou plutôt java qu'il utilise, est prévu par défaut pour utiliser 2Go de RAM. Dans le cas où votre machine n'aurait pas assez de mémoire disponible, vous pouvez baisser cette affectation à 1Go via la commande suivante (n'oubliez:
sed -i 's/-Xms2g -Xmx2g/-Xms1g -Xmx1g/g' /etc/default/puppetserver
  • On active et on démarre le service :

systemctl enable pupperserver && systemctl start pupperserver

  • Le fichier de configuration principal est /etc/puppetlabs/puppet/puppet.conf. On va le modifier pour ajouter les informations suivantes :

[main]
# Envoyer les logs de l'agent dans la console et dans le fichier de log
logdest = console,/var/log/puppetlabs/puppet/puppet-agent.log
# Adresse du serveur
server = puppet.shyrkasys.local

  • Pour plus de simplicité dans l'utilisation de l'agent, on va lui créer un lien symbolique :

ln -sf /opt/puppetlabs/bin/puppet /bin/puppet

Pare-feu

Les clients communiquent avec le serveur puppet au travers du port 8140. Pensez à autoriser ce port sur votre pare-feu.
  • On crée les fichiers d'architecture dans le dossier /etc/puppetlabs/code/environments/production/manifests/ :
    • site.pp : contiendra les configurations à déployer sur l'ensemble des clients.
    • node.pp : contiendra les classes à déployer sur chaque client de manière spécifique.

touch /etc/puppetlabs/code/environments/production/manifests/site.pp
echo 'node "default" {}' > /etc/puppetlabs/code/environments/production/manifests/node.pp

  • On crée aussi les dossiers utiles dans /etc/puppetlabs/code/environments/production/manifests/ :
    • class : contiendra les fichiers de définitions des classes personnalisées.
    • users : contiendra les fichiers de définitions des classes utilisateurs.

mkdir -p /etc/puppetlabs/code/environments/production/manifests/class/
mkdir -p /etc/puppetlabs/code/environments/production/manifests/users/

  • Sur les postes clients, on installe le dépôt nécessaire :

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

  • On met à jour les sources et on installe le client :

apt update && apt install -y puppet-agent

  • On paramètre le client :

echo "[main]" >> /etc/puppetlabs/puppet/puppet.conf
echo "server = puppet.shyrkasys.local" >> /etc/puppetlabs/puppet/puppet.conf

  • Là aussi, pour plus de simplicité, on met en place des liens symboliques pour le client (présent sur le serveur) et le serveur :

ln -sf /opt/puppetlabs/bin/puppet /bin/puppet
ln -sf /opt/puppetlabs/bin/puppetserver /bin/puppetserver

  • On exécute le client une première fois :

puppet agent -t

  • La console affiche alors que le client a fait une requête pour la création d'un certificat auprès du serveur puppet :

Info: Creating a new RSA SSL key for test.shyrkasys.local
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for test.shyrkasys.local
Info: Certificate Request fingerprint (SHA256): 1B:84:A2:70:05:47:26:9F:D0:44:75:F4:97:C6:1C:D2:C0:7A:EC:BE:6A:26:97:3F:0F:1A:FF:08:49:D4:B4:96
Info: Certificate for cassandra.shyrkasys.lan has not been signed yet
Couldn't fetch certificate from CA server; you might still need to sign this agent's certificate (test.shyrkasys.local).
Exiting now because the waitforcert setting is set to 0.

  • On retourne alors sur le serveur. Là, on tape la commande :

puppetserver ca list

  • On retrouve la demande de certificat :

Requested Certificates:
    test.shyrkasys.local       (SHA256)  1B:84:A2:70:05:47:26:9F:D0:44:75:F4:97:C6:1C:D2:C0:7A:EC:BE:6A:26:97:3F:0F:1A:FF:08:49:D4:B4:96

  • On signe donc le certificat :

puppetserver ca sign --certname test.shyrkasys.local

  • On vérifie sur le client en relançant la commande :

puppet agent -t

  • La console doit alors nous indiquer qu'elle récupère le nouveau certificat et qu'elle met le catalogue en cache :

Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for test.shyrkasys.local
Info: Certificate Request fingerprint (SHA256): 1B:84:A2:70:05:47:26:9F:D0:44:75:F4:97:C6:1C:D2:C0:7A:EC:BE:6A:26:97:3F:0F:1A:FF:08:49:D4:B4:96
Info: Downloaded certificate for test.shyrkasys.local from https://puppet.shyrkasys.local:8140/puppet-ca/v1
Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for test.shyrkasys.local
Info: Applying configuration version '1668800975'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.10 seconds

  • Sur le serveur, on va créer une classe de test /etc/puppetlabs/code/environments/production/manifests/class/test.pp dans laquelle on va ajouter le code suivant :
class test {
     notify { "Ceci est un test de déploiement": }
}
  • On modifie aussi le fichier /etc/puppetlabs/code/environments/production/manifests/node.pp avec la ligne suivante :
node "test.shyrkasys.local" { include test }
  • Sur le client cette fois, on relance la commande de l'agent :

puppet agent -t

  • La console doit alors faire apparaître la ligne de notification paramétrée :

Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for test.shyrkasys.local
Info: Applying configuration version '1668802924'
Notice: Ceci est un test de déploiement
Notice: /Stage[main]/Test/Notify[Ceci est un test de déploiement]/message: defined 'message' as 'Ceci est un test de déploiement'
Notice: Applied catalog in 0.58 seconds

Félicitations

Et voilà, votre orchestrateur est prêt à envoyer vos configurations et à automatiser vos installations sur tous ses clients. Il ne reste plus qu'à créer les classes nécessaires et à les appliquer sur le site ou les clients qui en ont besoin.
Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • linux_puppet.1668811440.txt.gz
  • Dernière modification : 2022/11/18 23:44
  • de nekan