Puppet est un outil de gestion de configuration open source et un framework d'automatisation de serveur. Puppet peut fonctionner sur des systèmes d'exploitation de type Unix, ainsi que sur les systèmes Microsoft Windows. Il vous permet de gérer et d'effectuer des tâches administratives et la configuration de centaines de systèmes à partir d'un serveur maître.
Dans ce tutoriel, je vais vous expliquer comment installer Puppet sur CentOS 8. Je vais installer et configurer un serveur CentOS 8 en tant que "maître" de la marionnette, et l'autre en tant qu'"agent".
Prérequis
- 2 serveurs CentOS 8 ou plus
- Privilèges root
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 de marionnettes
É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 la marionnette. Nous allons configurer les hôtes et le nom de domaine complet du serveur, configurer le serveur NTP et ajouter le référentiel de marionnettes pour le serveur CentOS 8.
Configurer les noms d'hôte
Tout d'abord, nous allons configurer les hôtes et le FQDN pour les deux serveurs. Le maître de la marionnette aura un nom d'hôte 'master' avec le FQDN 'master.hakase-labs.io', et l'agent aura le nom d'hôte 'agent01' avec le FQDN 'agent01.hakase-labs.io'.
Configurez le nom d'hôte à l'aide de la commande "hostnamectl" ci-dessous.
hostnamectl set-hostname hostname
Après cela, modifiez le fichier '/etc/hosts' pour configurer le serveur FQDN.
vim /etc/hosts
Remplacez l'adresse IP et le nom de domaine par les vôtres et collez-les.
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
Enregistrez et fermez.
Maintenant, redémarrez le service nommé par l'hôte pour appliquer un nouveau nom d'hôte et FQDN.
systemctl restart systemd-hostnamed
Et après cela, vérifiez le nom d'hôte et le FQDN à l'aide de la commande suivante.
hostname
hostname -f
Et vous obtiendrez un nouveau nom d'hôte et le FQDN a été configuré et appliqué au système.
Configurer le serveur NTP
Pour le serveur NTP, nous allons utiliser "chrony" pour nos serveurs.
Installez chrony en utilisant la commande dnf ci-dessous.
dnf install chrony
Après cela, modifiez la configuration de chrony '/etc/chrony.conf' à l'aide de l'éditeur vim.
vim /etc/chrony.conf
Changez maintenant le serveur de pool avec le pool le plus proche de votre pays. Vous pouvez vérifier le pool NTP disponible à l'aide de 'https://www.pool.ntp.org/zone/COUNTRYID'.
Copiez tous les serveurs NTP disponibles de votre pays et collez-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
Enregistrez et fermez.
Démarrez maintenant le service chronyd et ajoutez-le au démarrage du démarrage.
systemctl start chronyd
systemctl enable chronyd
La configuration du serveur NTP est terminée.
Ajouter un référentiel Puppet pour CentOS 8
Pour le serveur de dépôt de marionnettes CentOS 8, vous pouvez 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érifiez tous les référentiels disponibles sur le système à l'aide de la commande dnf ci-dessous.
dnf repolist
Et vous obtiendrez que le référentiel de marionnettes a été ajouté au système CentOS 8.
Désactiver SELinux
Pour désactiver SELinux, vous pouvez modifier la configuration '/etc/sysconfig/selinux' à l'aide de l'éditeur vim.
vim /etc/sysconfig/selinux
Changez maintenant la configuration de la valeur 'SELINUX' en "désactivé".
SELINUX=disabled
Enregistrez et fermez, puis redémarrez le serveur.
sudo reboot
Une fois que vous vous êtes reconnecté, vérifiez l'état de SELinux à l'aide de la commande suivante.
sestatus
Et vous obtiendrez le statut désactivé de SELinux.
Étape 2 - Installer et configurer Puppetserver
Dans cette étape, nous allons installer et configurer le puppetserver sur le nœud maître.
Installez le puppetserver en utilisant la commande dnf ci-dessous.
sudo dnf install puppetserver
Après cela, nous devons modifier les "paramètres d'initialisation" pour puppetserver et modifier l'allocation de mémoire en fonction de la RAM dont nous disposons.
Modifiez le paramètre d'initialisation de puppetserver situé dans '/etc/sysconfig/puppetserver' à l'aide de l'éditeur vim.
vim /etc/sysconfig/puppetserver
Modifiez maintenant la configuration 'JAVA_ARGS' pour l'allocation de mémoire en fonction de votre RAM.
JAVA_ARGS="-Xms1g -Xmx1g ...."
Enregistrez et fermez.
Ensuite, allez dans le répertoire '/etc/puppetlabs' et modifiez le fichier de configuration de la marionnette 'puppet.conf'.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Sous la configuration principale, définissez les noms alternatifs DNS avec le FQDN du serveur principal.
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
Après cela, définissez la configuration du serveur principal de la marionnette comme ci-dessous.
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Enregistrez et fermez.
Ajoutez maintenant le service puppetserver au démarrage du démarrage et démarrez le service.
systemctl enable puppetserver
systemctl start puppetserver
Le puppetserver est opérationnel sur le serveur CentOS 8 avec le port TCP par défaut '8140'.
Ajoutez le port puppetserver '8140' au pare-feu à l'aide de la commande suivante.
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
Et par conséquent, l'installation et la configuration du maître de marionnettes se sont terminé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 marionnette sur le serveur 'agent01'.
Connectez-vous au serveur 'agent01' et installez le package puppet-agent à l'aide de la commande dnf ci-dessous.
sudo dnf install puppet-agent
Après cela, allez dans le répertoire '/etc/puppetlabs' et modifiez le fichier de configuration 'puppet.conf' à l'aide de l'éditeur vim.
cd /etc/puppetlabs/
vim puppet/puppet.conf
Modifiez la configuration 'certname' et 'server' par la vôtre et collez-la dans la configuration.
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
Enregistrez et fermez.
Ensuite, démarrez le service Puppet et enregistrez 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 vous obtiendrez le résultat ci-dessous.
L'agent Puppet est maintenant opérationnel, il tente de s'enregistrer sur le serveur maître Puppet.
Revenons maintenant au serveur maître Puppet et vérifiez les demandes de certificat en attente.
/opt/puppetlabs/bin/puppetserver ca list
Et vous obtiendrez le certificat 'agent01.hakase-labs.io' sur la liste.
Signez 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 marionnette est maintenant enregistré sur le serveur maître.
Étape 4 - Vérifier la configuration de l'agent Puppet
Vérifiez maintenant la configuration de l'agent Puppet et testez la connexion entre l'agent Puppet et le maître à l'aide de la commande suivante.
/opt/puppetlabs/bin/puppet agent --test
Et vous obtiendrez le résultat ci-dessous.
En conséquence, l'agent Puppet a extrait la configuration du maître de marionnettes 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 configuration en créant le premier manifeste de marionnette pour installer le package httpd.
Accédez au répertoire '/etc/puppetlabs/code/environments/production/manifests' et créez le premier fichier manifeste de marionnette 'httpd.pp'.
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
Collez la configuration suivante.
node 'agent01.hakase-labs.io' {
package { 'httpd':
ensure => "installed",
}
service { 'httpd':
ensure => running,
enable => true
}
}
Enregistrez et fermez.
Allez maintenant au nœud de l'agent Puppet 'agento01' et exécutez la commande suivante.
/opt/puppetlabs/bin/puppet agent --test
Et vous verrez le résultat comme ci-dessous.
L'agent Puppet a extrait une nouvelle configuration du maître Puppet pour installer le package httpd et démarrer le service httpd.
Sur le nœud 'agent01', vérifiez l'état du service httpd et vérifiez le port HTTP '80'
systemctl status httpd
netstat -plntu
Et vous obtiendrez que le service httpd est opérationnel sur le serveur 'agent01' avec le port HTTP par défaut '80'. Le package httpd a été installé via le manifeste de marionnettes 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.