Comment installer le serveur et l’agent Puppet sur Debian 11

Puppet est un outil centralisé de gestion de la configuration et d’automatisation. DevOps crée une gestion de la configuration pour déployer des serveurs et des applications, et toute la configuration pour l’automatisation est stockée sur le « serveur Puppet » central. Ensuite, les nœuds « Agent » tirent une nouvelle configuration du « Puppet Server » et appliquent l’état tel que défini.

Toutes les connexions entre « Puppet Server » et les nœuds « Agent » sont cryptées par défaut à l’aide d’un certificat SSL/TLS. Puppet utilise le Domain Specific Language (DSL) pour décrire la configuration du système, et il est similaire à la syntaxe Ruby.

Dans ce guide, tu vas installer et configurer le serveur et l’agent Puppet sur le système Debian 11 Bullseye. Tu installeras le serveur Puppet sur le nom d’hôte du serveur ‘puppet-server’ et l’agent Puppet sur le serveur avec le nom d’hôte ‘agent’. À la fin, tu créeras les premiers manifestes Puppet pour installer la pile LEMP de base sur le nœud ‘agent’.

Conditions préalables

  • Tu auras besoin de deux serveurs Debian 11 différents.
    • Le‘puppet-server‘ avec l’adresse IP‘192.168.5.100‘ et le fqdn‘puppet-server.localdomainl.lan‘.
    • Le noeud‘agent‘ avec l’adresse IP‘192.168.5.150‘ et le fqdn‘agent.localdomain.lan‘.
  • Tu auras également besoin de l’utilisateur root ou de l’utilisateur avec les privilèges root/sudo.

Configuration du FQDN

Tout d’abord, tu vas configurer le nom de domaine entièrement qualifié (FQDN) et le fichier ‘/etc/hosts’ sur ‘puppet-server’ et ‘agent’. Cela permettra aux deux serveurs de communiquer avec le nom de domaine local.

Pour configurer le FQDN, exécute la commande‘hostnamectl‘ ci-dessous.

Exécute la commande suivante pour configurer le fqdn‘puppet-server.localdomain.lan‘ sur le‘puppet-server‘.

hostnamectl set-hostname puppet-server.localdomain.lan

Exécute la commande suivante pour configurer le fqdn‘agent.localdomain.lan‘ sur le nœud‘agent‘.

hostnamectl set-hostname agent.localdomain.lan

Ensuite, modifie le fichier‘/etc/hosts‘ en utilisant l’éditeur vim comme ci-dessous.

sudo vim /etc/hosts

Copie et colle la configuration suivante.

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

Enregistre le fichier et quitte.

Enfin, exécute la commande‘ping‘ ci-dessous pour vérifier la connexion entre le‘puppet-server‘ et l »agent‘.

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

Si ta configuration est correcte, tu verras la sortie suivante. Le‘puppet-server.localdomain.lan‘ est résolu pour le serveur‘192.168.5.100‘, et le‘agent.localdomain.lan‘ est résolu pour le nœud d’agent‘192.168.5.150‘.

Ping vers puppet-server

Configurer l'agent marionnette

Ajouter le référentiel Puppet

Par défaut, Puppelabs fournit des paquets de référentiel pour différentes distributions Linux, dont la dernière Debian 11 Bullseye. Dans cette étape, tu vas ajouter et installer le référentiel Puppet sur ‘puppet-server’ et ‘agent’. Au moment où nous écrivons ces lignes, la dernière version de Puppet est v7.x.

Télécharge le paquet du référentiel à l’aide de la commande‘wget‘ ci-dessous.

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

Ensuite, installe le fichier deb‘puppet7-release-bullseye.deb‘ en utilisant la commande‘dpkg‘ ci-dessous.

sudo dpkg -i puppet7-release-bullseye.deb

Une fois l’installation terminée, exécute la commande‘apt‘ ci-dessous pour mettre à jour et rafraîchir l’index des paquets Debian.

sudo apt update

Tu es maintenant prêt à installer les paquets Puppet.

Configurer le dépôt de marionnettes

Installation du serveur Puppet

Dans cette étape, tu vas installer le paquet du serveur Puppet sur le ‘puppet-server’. Au moment où nous écrivons ces lignes, la dernière version de Puppet est la v7.

Pour installer le serveur Puppet, exécute la commande apt ci-dessous. Cette commande a également installé automatiquement d’autres paquets tels que Java OpenJDK.

sudo apt install puppetserver

Tape‘Y‘ pour confirmer l’installation.

Installe le serveur Puppet

Une fois l’installation terminée, tu devras charger l’environnement bash pour le serveur Puppet.

Par défaut, Puppet stocke son fichier binaire dans le répertoire‘/opt/puppetlabs/bin‘. Exécute la commande suivante pour appliquer la nouvelle variable d’environnement‘$PATH‘ pour Puppet Server.

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

En option, tu peux aussi appliquer la variable d’environnement‘$PATH‘ en exécutant la commande suivante.

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

Vérifie maintenant la variable d’environnement‘$PATH‘ à l’aide de la commande ci-dessous. Assure-toi que le répertoire‘/opt/puppetlabs/bin‘ figure dans la liste de la variable d’environnement‘$PATH‘.

echo $PATH

Après cela, tu peux exécuter la commande‘puppetserver‘ normalement. Tu peux vérifier ci-dessous la version de Puppet.

puppetserver -v

Tu devrais obtenir une sortie similaire à la capture d’écran ci-dessous.

Configurer la variable d'environnement PATH pour Puppet

Ensuite, modifie la configuration du serveur Puppet ‘/etc/default/puppetserver’ en utilisant l’éditeur vim.

sudo vim /etc/default/puppetserver

Change l’allocation de mémoire maximale pour le serveur Puppet. Cela dépend de la mémoire de ton système. Dans ce guide, nous avons 2 Go de mémoire et nous allouerons 1 Go au serveur Puppet. Et nous utiliserons la configuration ci-dessous.

JAVA_ARGS="-Xms1g -Xmx1g"

Sauvegarde le fichier de configuration et quitte.

Configurer la limite de mémoire maximale du serveur Puppet

Ensuite, recharge le gestionnaire systemd pour appliquer le nouveau fichier de service Puppet.

sudo systemctl daemon-reload

Ensuite, démarre et active le service‘puppetserver‘ à l’aide de la commande ci-dessous.

sudo systemctl start enable --now puppetserver

Configure et active puppetserver

Le service‘puppetserver‘ devrait être opérationnel. Exécute la commande ci-dessous pour vérifier le service‘puppetserver‘.

sudo systemctl status puppetserver

Tu devrais voir un résultat similaire à la capture d’écran ci-dessous.

Vérifie l'état du serveur de marionnettes

De plus, si tu utilises un pare-feu UFW sur ton système, assure-toi d’ouvrir le port‘8140‘ qui sera utilisé par le serveur Puppet.

Exécute la commande ci-dessous pour allier toutes les connexions entrantes du sous-réseau local‘192.168.5.0/24‘ au serveur Puppet sur le port‘8140‘.

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

Voici les règles actuelles du pare-feu UFW que tu devrais voir.

Configurer le pare-feu ufw pour le serveur Puppet

Configuration du serveur Puppet

Dans cette étape, tu vas modifier la configuration du serveur Puppet. Tu peux le faire en modifiant directement la configuration de Puppet ou en générant la configuration à l’aide de la ligne de commande‘puppet‘.

Exécute les commandes ‘puppet’ ci-dessous pour configurer le serveur Puppet. Tu définiras le nom de domaine par défaut du serveur Puppet et l’intervalle d’exécution dans la section‘main‘, ainsi que l’environnement et les noms dns_alt_names dans la section‘server‘.

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

Vérifie maintenant la configuration de Puppet Server‘/etc/puppetlabs/puppet/puppet.conf‘ en utilisant la commande‘cat‘ ci-dessous.

cat /etc/puppetlabs/puppet/puppet.conf

Tu devrais voir la configuration du serveur Puppet comme ci-dessous.

Configurer le serveur Puppet

Enfin, redémarre le service‘puppetserver‘ pour appliquer une nouvelle configuration en exécutant la commande‘systemctl‘ ci-dessous.

sudo systemctl restart puppetserver

À ce stade, tu as terminé l’installation et la configuration de Puppet Server.

Installation et configuration de Puppet Agent

Dans cette étape, tu vas installer et configurer l’agent Puppet sur la machine cliente‘agent‘.

Avant d’installer Puppet Agent, assure-toi que tu as terminé la configuration du FQDN et ajouté le référentiel Puppet.

Maintenant, installons et configurons l’Agent Puppet.

Installe le paquet‘puppet-agent‘ à l’aide de la commande apt ci-dessous.

sudo apt install puppet-agent

Installer l'agent Puppet

Une fois l’installation terminée, exécute la commande ci-dessous pour démarrer et activer le service Puppet.

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

Tu devrais voir une sortie similaire à la capture d’écran ci-dessous.

Démarre et active l'agent Puppet

Ensuite, tu vas configurer la variable d’environnement‘$PATH‘ pour ajouter le chemin binaire de Puppet ‘/opt/puppetlabs/bin/‘. Cela te permettra d’exécuter directement la commande‘puppet‘ sans avoir à connaître le chemin complet du fichier binaire.

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

Une autre façon de le faire est d’ajouter une nouvelle variable d’environnement‘$PATH‘ à la configuration‘~/.bashrc‘ à l’aide de la commande suivante.

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

Vérifie maintenant la configuration de la variable d’environnement‘$PATH‘ à l’aide de la commande suivante.

echo $PATH

Tu devrais voir que le chemin binaire de Puppet‘/opt/puppetlabs/bin‘ est ajouté à la variable d’environnement ‘$PATH‘.

Configure la variable d'environnement PATH de Puppet

Enregistrement de l’agent Puppet auprès du serveur Puppet

Après avoir installé l’agent Puppet, tu vas maintenant configurer l’agent Puppet pour l’enregistrer auprès du serveur principal Puppet.

Tout d’abord, vérifie que le fqdn du serveur Puppet est accessible depuis la machine‘agent‘. Teste-le à l’aide de la commande‘ping‘ ci-dessous.

ping puppet-server.localdomain.lan -c3

Ping vers le serveur puppet

Ensuite, exécute les commandes ci-dessous pour configurer l’agent Puppet. Cela permettra de définir le nom de domaine du serveur Puppet et le ca_server sur la section‘agent‘.

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

Vérifie la configuration de Puppet générée dans le fichier ‘/etc/puppetlabs/puppet/puppet.conf’.

cat /etc/puppetlabs/puppet/puppet.conf

Tu devrais voir une sortie similaire à la capture d’écran ci-dessous.

Configurer l'agent Puppet

Maintenant, exécute la commande ci-dessous pour redémarrer le service Puppet et appliquer les nouvelles modifications. Vérifie ensuite le service Puppet et assure-toi qu’il est actif et fonctionne.

sudo systemctl restart puppet
sudo systemctl status puppet

Tu trouveras ci-dessous la sortie de l’état du service Puppet.

Redémarre l'agent Puppet

Ensuite, exécute la commande ci-dessous pour enregistrer l’agent Puppet auprès du serveur Puppet. Cette commande générera de nouveaux certificats TLS et créera de nouvelles demandes de signature de certificats au serveur Puppet.

puppet ssl bootstrap

Passe maintenant au terminal du serveur Puppet et exécute la commande ci-dessous pour vérifier les demandes de signature de certificat, puis vérifie la signature du certificat pour l’agent Puppet‘agent.localdomain.lan‘.

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

Tu devrais voir le message suivant :‘La demande de certificat signée avec succès ….‘.

Contrôler et vérifier la signature du certificat

Ensuite, exécute la commande ci-dessous pour vérifier la liste des certificats sur le serveur Puppet.

puppetserver ca list-all

Tu devrais voir deux certificats différents, celui du serveur Puppet et celui de l’agent Puppet.

Liste des certificats signés

Maintenant, passe à nouveau au terminal de l’agent Puppet et tu devrais voir des messages tels que‘Notice : Completed SSL initialization‘, ce qui signifie que les demandes de signature de certificat sont terminées avec succès.

Bootstraping de l'agent puppet

À ce stade, tu es prêt à créer un nouveau premier manifeste Puppet.

Création du premier manifeste Puppet

Dans cette étape, tu vas créer un nouveau premier manifeste Puppet pour installer la pile LEMP (Nginx, MariaDB et PHP-FPM). Tous les manifestes pour l’environnement de production doivent être stockés dans le répertoire du serveur Puppet‘/etc/puppetlabs/code/environnements/production/‘.

Change ton répertoire de travail actuel en‘/etc/puppetlabs/code/environnements/production/‘.

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

Ensuite, crée un nouveau répertoire de mise en page du manifeste pour la pile LEMP dans le répertoire‘modules‘.

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

Va dans le répertoire‘modules/lemp‘ et crée un nouveau fichier de manifeste Puppet‘manifests/init.pp‘ en utilisant l’éditeur vim/nano.

cd modules/lemp/
nano manifests/init.pp

Copie et colle le langage syntaxique Puppet suivant pour installer LEMP Stack, assure-toi que chaque service LEMP Stack est opérationnel et crée un nouveau fichier index.html personnalisé.

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',
   }

}

Sauvegarde le fichier et quitte.

Ensuite, exécute la commande ci-dessous pour valider le fichier manifeste Puppet ‘init.pp’.

puppet parser validate init.pp

Si tu n’as pas vu de message de sortie, la configuration est correcte.

Crée maintenant une autre configuration‘manifests/site.pp‘ en utilisant l’éditeur vim/nano.

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

Définis l’hôte cible comme‘agent.localdomain.lan‘ et applique le nouveau manifeste Puppet‘lemp‘.

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

Sauvegarde le fichier et quitte.

Vérifie à nouveau la configuration du manifeste Puppet à l’aide de la commande suivante.

puppet parser validate site.pp

Vérifier et appliquer les manifestes Puppet

Tu as maintenant créé un nouveau premier manifeste Puppet pour déployer LEMP Stack. À ce stade, le nœud Puppet Agent synchronisera automatiquement tous les manifestes avec le serveur Puppet et appliquera une nouvelle configuration de manifeste.

Mais tu peux aussi appliquer le manifeste Puppet manuellement depuis la machine Puppet Agent.

Retourne sur le serveur terminal ‘agent’ et exécute la commande ci-dessous pour appliquer les manifestes Puppet manuellement.

puppet agent -t

Cela exécutera le manifeste Puppet sur la machine Puppet Agent et installera LEMP Stack via le manifeste Puppet‘lemp‘.

Voici le résultat que tu obtiendras.

Applique le manifeste Puppet

Exécute maintenant la commande ci-dessous pour vérifier chaque service Nginx, MariaDB et PHP-FPM.

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

Tu devrais voir que chaque service est actif et fonctionne.

Statut du service Nginx

État du service MariaDB

Statut du service PHP-FPM

Ouvre maintenant ton navigateur Web et tape l’adresse IP de ton nœud Agent dans la barre d’adresse. Et tu devrais voir le fichier index.html personnalisé ci-dessous.

Index.html personnalisé créé par Puppet

Tu as maintenant appliqué avec succès le déploiement LEMP Stack à la machine Agent à l’aide des manifestes Puppet.

Conclusion

Félicitations ! Tu as maintenant installé avec succès Puppet Server et Agent sur la Debian 11 Bullseye. Tu as aussi appris à créer les premiers manifestes Puppet pour installer LEMP Stack.

Dans l’étape suivante, il peut être intéressant d’installer un autre nœud et de créer un manifeste Puppet plus complexe pour tes déploiements.

Vous aimerez aussi...