Comment configurer Puppet Master et Agent sur CentOS 8
Puppet est un outil de gestion de la configuration et un cadre d’automatisation des serveurs open-source. Puppet peut fonctionner sur des systèmes d’exploitation de type Unix, ainsi que sur les systèmes Microsoft Windows. Il te permet de gérer et d’effectuer des tâches administratives et la configuration de centaines de systèmes à partir d’un seul serveur maître.
Dans ce tutoriel, je vais t’expliquer comment installer Puppet sur CentOS 8. J’installerai et configurerai un serveur CentOS 8 en tant que « maître » de Puppet, et l’autre en tant qu' »agent ».
Conditions préalables
- 2 serveurs CentOS 8 ou plus
- Privilèges de racine
Ce que nous allons faire :
- Pré-installation de Puppet
- Installer et configurer le serveur Puppet
- Installer et configurer l’agent Puppet
- Vérifier la configuration de l’agent Puppet
- Créer le premier manifeste Puppet
Étape 1 – Pré-installation de Puppet
Dans cette première étape, nous allons préparer les serveurs maître et agent pour l’installation de Puppet. Nous allons configurer les hôtes et le FQDN du serveur, configurer le serveur NTP et ajouter le référentiel Puppet pour le serveur CentOS 8.
Configurer les noms d’hôtes
Tout d’abord, nous allons configurer les hôtes et le FQDN des deux serveurs. Le maître de marionnettes aura un nom d’hôte ‘master’ avec le FQDN ‘master.hakase-labs.io’, et l’agent aura un nom d’hôte ‘agent01’ avec le FQDN ‘agent01.hakase-labs.io’.
Configure le nom d’hôte à l’aide de la commande ‘hostnamectl’ ci-dessous.
hostnamectl set-hostname hostname
Ensuite, modifie le fichier ‘/etc/hosts’ pour configurer le serveur FQDN.
vim /etc/hosts
Change l’adresse IP et le nom de domaine par les tiens et colle-les dans le fichier.
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
Sauvegarde et ferme.
Maintenant, redémarre le service hostnamed pour appliquer un nouveau nom d’hôte et un nouveau FQDN.
systemctl restart systemd-hostnamed
Et après cela, vérifie le nom d’hôte et le FQDN à l’aide de la commande suivante.
hostname
hostname -f
Et tu verras qu’un nouveau nom d’hôte et un nouveau FQDN ont été configurés et appliqués au système.
Configurer le serveur NTP
Pour le serveur NTP, nous allons utiliser « chrony » pour nos serveurs.
Installe chrony à l’aide de la commande dnf ci-dessous.
dnf install chrony
Ensuite, modifie la configuration de chrony ‘/etc/chrony.conf’ en utilisant l’éditeur vim.
vim /etc/chrony.conf
Change maintenant le serveur de pool avec le pool le plus proche de ton pays. Tu peux vérifier les pools NTP disponibles en utilisant‘https://www.pool.ntp.org/zone/COUNTRYID‘.
Copie tous les serveurs NTP disponibles dans ton pays et colle-les dans le fichier ‘chrony.conf’ comme ci-dessous.
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
Sauvegarde et ferme.
Maintenant, démarre le service chronyd et ajoute-le au démarrage de l’ordinateur.
systemctl start chronyd
systemctl enable chronyd
La configuration du serveur NTP est terminée.
Ajouter le référentiel Puppet pour CentOS 8
Pour le serveur CentOS 8 à référentiel Puppet, tu peux l’installer manuellement à l’aide de la commande rpm comme ci-dessous.
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Après cela, vérifie tous les référentiels disponibles sur le système à l’aide de la commande dnf ci-dessous.
dnf repolist
Et tu obtiendras que le référentiel puppet a été ajouté au système CentOS 8.
Désactiver SELinux
Pour désactiver SELinux, tu peux modifier la configuration ‘/etc/sysconfig/selinux’ en utilisant l’éditeur vim.
vim /etc/sysconfig/selinux
Change ensuite la configuration de la valeur ‘SELINUX’ en ‘désactivé’.
SELINUX=disabled
Enregistre et ferme, puis redémarre le serveur.
sudo reboot
Une fois que tu t’es reconnecté, vérifie l’état de SELinux à l’aide de la commande suivante.
sestatus
Tu obtiendras le statut SELinux désactivé.
Étape 2 – Installer et configurer Puppetserver
Dans cette étape, nous allons installer et configurer le puppetserver sur le nœud maître.
Installe le puppetserver à l’aide de la commande dnf ci-dessous.
sudo dnf install puppetserver
Ensuite, nous devons modifier les ‘paramètres init’ de puppetserver et changer l’allocation de mémoire en fonction de la RAM dont nous disposons.
Modifie les paramètres d’initialisation de puppetserver qui se trouvent dans ‘/etc/sysconfig/puppetserver’ à l’aide de l’éditeur vim.
vim /etc/sysconfig/puppetserver
Change maintenant la configuration ‘JAVA_ARGS’ pour l’allocation de mémoire en fonction de ta RAM.
JAVA_ARGS="-Xms1g -Xmx1g ...."
Sauvegarde et ferme.
Ensuite, va dans le répertoire ‘/etc/puppetlabs’ et modifie le fichier de configuration des marionnettes ‘puppet.conf’.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Sous la configuration maître, définis les noms alternatifs DNS avec le FQDN du serveur maître.
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Ensuite, définis la configuration du serveur principal de puppet comme ci-dessous.
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Sauvegarde et ferme.
Ajoute maintenant le service puppetserver à l’heure de démarrage et démarre le service.
systemctl enable puppetserver
systemctl start puppetserver
Le puppetserver est en place et fonctionne sur le serveur CentOS 8 avec le port TCP par défaut ‘8140’.
Ajoute le port ‘8140’ du puppetserver au firewalld à l’aide de la commande suivante.
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
Et voilà, l’installation et la configuration de Puppet Master ont été effectuées avec succès.
Étape 3 – Installer et configurer l’agent Puppet
Après avoir installé le serveur maître Puppet ‘master.hakase-labs.io’, nous allons installer un agent Puppet sur le serveur ‘agent01’.
Connecte-toi au serveur ‘agent01’ et installe le paquetage puppet-agent à l’aide de la commande dnf ci-dessous.
sudo dnf install puppet-agent
Ensuite, va dans le répertoire ‘/etc/puppetlabs’ et modifie le fichier de configuration ‘puppet.conf’ à l’aide de l’éditeur vim.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Change les configurations ‘certname’ et ‘server’ avec les tiennes et colle-les dans la configuration.
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Sauvegarde et ferme.
Ensuite, démarre le service Puppet et enregistre l’agent Puppet sur le serveur maître à l’aide de la commande suivante.
/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
Et tu obtiendras le résultat ci-dessous.
L’agent Puppet est maintenant opérationnel, il tente de s’enregistrer auprès du serveur maître Puppet.
Retourne maintenant sur le serveur maître Puppet et vérifie les demandes de certificat en attente.
/opt/puppetlabs/bin/puppetserver ca list
Tu trouveras le certificat ‘agent01.hakase-labs.io’ dans la liste.
Signe maintenant le certificat ‘agent01’ à l’aide de la commande ci-dessous.
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
Et l’agent Puppet est maintenant enregistré sur le serveur maître.
Étape 4 – Vérifier la configuration de l’agent Puppet
Vérifie maintenant la configuration de l’agent Puppet et teste la connexion entre l’agent Puppet et le maître à l’aide de la commande suivante.
/opt/puppetlabs/bin/puppet agent --test
Tu obtiendras le résultat ci-dessous.
En conséquence, l’agent Puppet a extrait la configuration du maître Puppet et l’a appliquée au serveur sans aucune erreur.
Étape 5 – Créer le premier manifeste
À ce stade, l’installation et la configuration de Puppet pour le maître et l’agent sont terminées.
Et pour cette étape, nous allons tester notre installation en créant le premier manifeste Puppet pour installer le paquet httpd.
Va dans le répertoire ‘/etc/puppetlabs/code/environnements/production/manifests’ et crée le premier fichier de manifeste Puppet ‘httpd.pp’.
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
Colle la configuration suivante.
node 'agent01.hakase-labs.io' {
package { 'httpd':
ensure => "installed",
}
service { 'httpd':
ensure => running,
enable => true
}
}
Sauvegarde et ferme.
Maintenant, va dans le nœud de l’agent Puppet ‘agento01’ et exécute la commande suivante.
/opt/puppetlabs/bin/puppet agent --test
Et tu verras le résultat comme ci-dessous.
L’agent Puppet a tiré une nouvelle configuration du maître Puppet pour installer le paquet httpd et démarrer le service httpd.
Sur le nœud ‘agent01′, vérifie l’état du service httpd et vérifie le port HTTP ’80’.
systemctl status httpd
netstat -plntu
Tu obtiendras que le service httpd est en place et fonctionne sur le serveur ‘agent01′ avec le port HTTP par défaut ’80’. Le paquet httpd a été installé via le manifeste Puppet que nous avons créé en haut.
Et par conséquent, l’installation et la configuration du maître et de l’agent Puppet sur le serveur CentOS 8 ont été effectuées avec succès.