GNU/Linux >> Tutoriels Linux >  >> Debian

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

Puppet est un outil centralisé de gestion et d'automatisation de la configuration. 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 « Puppet Server » central. Après cela, les nœuds "Agent" extrairont une nouvelle configuration du "Puppet Server" et appliqueront l'état tel que défini.

Toutes les connexions entre les nœuds "Puppet Server" et "Agent" sont cryptées par défaut à l'aide de SSL /Certificat TLS. Puppet utilise un langage spécifique au domaine (DSL) pour décrire la configuration du système, et il est similaire à la syntaxe Ruby.

Dans ce guide, vous allez installer et configurer le serveur et l'agent Puppet sur Debian 11 Bullseye. Vous allez installer 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'. En fin de compte, vous créerez les premiers manifestes de marionnettes pour installer la pile LEMP de base sur le nœud "agent".

Prérequis

  • Vous aurez besoin de deux serveurs Debian 11 différents.
    • Le 'serveur de marionnettes ' avec l'adresse IP '192.168.5.100 ' et le nom de domaine complet 'puppet-server.localdomainl.lan '.
    • Le 'mandataire ' nœud avec l'adresse IP '192.168.5.150 ' et le nom de domaine complet 'agent.localdomain.lan '.
  • De plus, vous aurez besoin de l'utilisateur root ou de l'utilisateur avec les privilèges root/sudo.

Configuration du nom de domaine complet

Tout d'abord, vous allez configurer le nom de domaine complet (FQDN) et le fichier '/etc/hosts' sur 'puppet-server' et 'agent'. Cela garantira que les deux serveurs peuvent communiquer avec le nom de domaine local.

Pour configurer le FQDN, exécutez le 'hostnamectl ' ci-dessous.

Exécutez la commande suivante pour configurer le fqdn 'puppet-server.localdomain.lan ' sur le 'serveur de marionnettes '.

hostnamectl set-hostname puppet-server.localdomain.lan

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

hostnamectl set-hostname agent.localdomain.lan

Ensuite, modifiez le '/etc/hosts ' en utilisant l'éditeur vim comme ci-dessous.

sudo vim /etc/hosts

Copiez et collez la configuration suivante.

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

Enregistrez le fichier et quittez.

Enfin, lancez le 'ping ' ci-dessous pour vérifier la connexion entre le 'puppet-server ' et 'agent '.

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

Si votre configuration est correcte, vous verrez la sortie suivante. Le 'puppet-server.localdomain.lan ' est résolu sur le serveur '192.168.5.100 ', et le 'agent.localdomain.lan ' est résolu au nœud d'agent '192.168.5.150 '.

Ajout d'un référentiel Puppet

Par défaut, Puppelabs fournit des packages de référentiel pour différentes distributions Linux, y compris la dernière Debian 11 Bullseye. Dans cette étape, vous allez ajouter et installer le référentiel Puppet à la fois sur 'puppet-server' et 'agent'. Au moment d'écrire ces lignes, la dernière version de Puppet est la v7.x.

Téléchargez le package de référentiel à l'aide de 'wget ' ci-dessous.

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

Ensuite, installez le fichier deb 'puppet7-release-bullseye.deb ' en utilisant le 'dpkg ' ci-dessous.

sudo dpkg -i puppet7-release-bullseye.deb

Une fois l'installation terminée, exécutez le 'apt ' ci-dessous pour mettre à jour et actualiser l'index des packages Debian.

sudo apt update

Vous êtes maintenant prêt à installer les packages Puppet.

Installation du serveur Puppet

Dans cette étape, vous allez installer le package du serveur Puppet sur le 'puppet-server'. Au moment d'écrire ces lignes, la dernière version de Puppet est la v7.

Pour installer Puppet Server, exécutez la commande apt ci-dessous. Cette commande a également installé automatiquement d'autres packages tels que Java OpenJDK.

sudo apt install puppetserver

Tapez 'O ' pour confirmer l'installation.

Une fois l'installation terminée, vous devrez charger l'environnement bash pour le serveur Puppet.

Par défaut, Puppet stocke son fichier binaire sur le '/opt/puppetlabs/bin ' répertoire. Exécutez la commande suivante pour appliquer le nouveau '$PATH ' variable d'environnement pour Puppet Server.

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

En option, vous pouvez également appliquer le '$PATH ' variable d'environnement en exécutant la commande suivante.

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

Vérifiez maintenant le '$PATH ' variable d'environnement à l'aide de la commande ci-dessous. Assurez-vous que le répertoire '/opt/puppetlabs/bin ' est sur la liste du '$PATH ' variable d'environnement.

echo $PATH

Après cela, vous pouvez exécuter le 'puppetserver ' commande normalement. Ci-dessous, vous pouvez vérifier la version Puppet.

puppetserver -v

Vous devriez obtenir une sortie similaire à la capture d'écran ci-dessous.

Ensuite, modifiez la configuration du serveur Puppet '/etc/default/puppetserver' en utilisant l'éditeur vim.

sudo vim /etc/default/puppetserver

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

JAVA_ARGS="-Xms1g -Xmx1g"

Enregistrez le fichier de configuration et quittez.

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

sudo systemctl daemon-reload

Ensuite, démarrez et activez le 'puppetserver ' à l'aide de la commande ci-dessous.

sudo systemctl start enable --now puppetserver

Le service 'serveur de marionnettes ' devrait être opérationnel. Exécutez la commande ci-dessous pour vérifier le 'puppetserver '.

sudo systemctl status puppetserver

Vous devriez voir une sortie similaire à la capture d'écran ci-dessous.

De plus, si vous utilisez un pare-feu UFW sur votre système, assurez-vous d'ouvrir le port '8140 ' qui sera utilisé par le serveur Puppet.

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

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

Vous trouverez ci-dessous les règles de pare-feu UFW actuelles que vous devriez voir.

Configuration du serveur Puppet

Dans cette étape, vous modifierez la configuration de Puppet Server. Et cela peut être fait en éditant directement la configuration de Puppet ou en générant la configuration à l'aide de la 'marionnette ' ligne de commande.

Exécutez les commandes 'puppet' ci-dessous pour configurer le serveur Puppet. Cela configurera le nom de domaine Puppet Server par défaut et l'intervalle d'exécution dans le 'principal ' et la section environnement et dns_alt_names dans la section 'serveur '.

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érifiez maintenant la configuration de Puppet Server '/etc/puppetlabs/puppet/puppet.conf ' en utilisant le 'chat ' ci-dessous.

cat /etc/puppetlabs/puppet/puppet.conf

Vous devriez voir la configuration de Puppet Server comme ci-dessous.

Enfin, redémarrez le service 'puppetserver ' pour appliquer une nouvelle configuration en exécutant le 'systemctl ' ci-dessous.

sudo systemctl restart puppetserver

À ce stade, vous avez terminé l'installation et la configuration de Puppet Server.

Installation et configuration de l'agent Puppet

Dans cette étape, vous allez installer et configurer l'agent Puppet sur la machine cliente 'agent '.

Avant d'installer Puppet Agent, assurez-vous d'avoir terminé la configuration du nom de domaine complet et ajouté le référentiel Puppet.

Installons et configurons maintenant l'agent Puppet.

Installez le paquet 'puppet-agent ' en utilisant la commande apt ci-dessous.

sudo apt install puppet-agent

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

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

Vous devriez voir une sortie similaire à la capture d'écran ci-dessous.

Ensuite, vous allez configurer le '$PATH ' variable d'environnement pour ajouter le chemin binaire Puppet '/opt/puppetlabs/bin/ '. Cela vous permet d'exécuter la 'marionnette ' directement sans 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 un nouveau '$PATH ' à la variable d'environnement '~/.bashrc ' à l'aide de la commande suivante.

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

Vérifiez maintenant le '$PATH ' configuration de la variable d'environnement à l'aide de la commande suivante.

echo $PATH

Vous devriez voir le chemin binaire Puppet '/opt/puppetlabs/bin ' est ajouté au '$PATH ' variable d'environnement.

Enregistrement de l'agent Puppet sur le serveur Puppet

Après avoir installé l'agent Puppet, vous allez maintenant configurer l'agent Puppet pour l'enregistrer sur le serveur Puppet principal.

Tout d'abord, assurez-vous que le nom de domaine complet de Puppet Server est accessible à partir de l'agent ' machine. Testez-le en utilisant le 'ping ' ci-dessous.

ping puppet-server.localdomain.lan -c3

Ensuite, exécutez les commandes ci-dessous pour configurer l'agent Puppet. Cela définira le nom de domaine Puppet Server et ca_server sur le 'mandataire '.

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

Vérifiez la configuration Puppet générée dans le fichier '/etc/puppetlabs/puppet/puppet.conf'.

cat /etc/puppetlabs/puppet/puppet.conf

Vous devriez voir une sortie similaire à la capture d'écran ci-dessous.

Maintenant, exécutez la commande ci-dessous pour redémarrer le service Puppet et appliquer les nouvelles modifications. Vérifiez ensuite le service Puppet et assurez-vous qu'il est actif et en cours d'exécution.

sudo systemctl restart puppet
sudo systemctl status puppet

Vous trouverez ci-dessous la sortie de l'état du service Puppet.

Ensuite, exécutez la commande ci-dessous pour enregistrer l'agent Puppet sur le serveur Puppet. Cette commande générera de nouveaux certificats TLS et créera de nouvelles demandes de signature de certificat au serveur Puppet.

puppet ssl bootstrap

Passez maintenant au terminal Puppet Server et exécutez la commande ci-dessous pour vérifier les demandes de signature de certificat, puis vérifiez la signature du certificat pour l'agent Puppet 'agent.localdomain.lan '.

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

Vous devriez voir le message tel que 'Demande de certificat signée avec succès.... '.

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

puppetserver ca list-all

Vous devriez voir deux certificats différents, le certificat pour le serveur Puppet et l'agent Puppet.

Maintenant, déplacez-vous à nouveau vers le terminal Puppet Agent et vous devriez voir des messages tels que 'Avis :Initialisation SSL terminée ', ce qui signifie que les demandes de signature de certificat sont terminées avec succès.

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

Création du premier manifeste de marionnette

Dans cette étape, vous allez créer un nouveau premier manifeste de marionnette 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 Puppet Server '/etc/puppetlabs/code/environments/production/ '.

Changez votre répertoire de travail actuel en '/etc/puppetlabs/code/environments/production/ '.

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

Ensuite, créez un nouveau répertoire de mise en page du manifeste pour la pile LEMP sous les 'modules ' répertoire.

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

Déplacez-vous vers les 'modules/lemp ' et créez un nouveau fichier manifeste Puppet 'manifests/init.pp ' en utilisant l'éditeur vim/nano.

cd modules/lemp/
nano manifests/init.pp

Copiez et collez le langage de syntaxe de marionnette suivant pour installer LEMP Stack, assurez-vous que chaque service LEMP Stack est opérationnel et créez 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',
   }

}

Enregistrez le fichier et quittez.

Ensuite, exécutez la commande ci-dessous pour valider le fichier manifeste Puppet 'init.pp' .

puppet parser validate init.pp

Si vous n'avez vu aucun message de sortie, la configuration est correcte.

Créez maintenant une autre configuration 'manifests/site.pp ' en utilisant l'éditeur vim/nano.

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

Définissez l'hôte cible sur 'agent.localdomain.lan ' et appliquez le nouveau manifeste Puppet 'lemp '.

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

Enregistrez le fichier et quittez.

Vérifiez à nouveau la configuration du manifeste Puppet à l'aide de la commande suivante.

puppet parser validate site.pp

Vérification et application des manifestes Puppet

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

Mais vous pouvez également appliquer le manifeste Puppet manuellement à partir de la machine de l'agent Puppet.

Revenez à "l'agent" du serveur terminal et exécutez la commande ci-dessous pour appliquer manuellement les manifestes Puppet.

puppet agent -t

Cela exécutera le manifeste Puppet sur la machine de l'agent Puppet et installera LEMP Stack via les manifestes Puppet 'lemp '.

Vous trouverez ci-dessous la sortie que vous obtiendrez.

Exécutez 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

Vous devriez voir que chaque service est actif et en cours d'exécution.

Ouvrez maintenant votre navigateur Web et saisissez l'adresse IP de votre nœud d'agent dans la barre d'adresse. Et vous devriez voir le fichier index.html personnalisé ci-dessous.

Vous avez maintenant appliqué avec succès le déploiement de la pile LEMP à la machine de l'agent à l'aide des manifestes Puppet.

Conclusion

Félicitations ! Vous avez maintenant installé avec succès Puppet Server et Agent sur Debian 11 Bullseye. De plus, vous avez appris à créer les premiers manifestes Puppet pour l'installation de LEMP Stack.

À l'étape suivante, il peut être intéressant de configurer un autre nœud et de créer un manifeste Puppet plus complexe pour vos déploiements.


Debian
  1. Comment installer et configurer OpenVPN Server sur Debian 10

  2. Comment installer le serveur Redis sur Debian 11

  3. Comment installer Puppet 6.x sur Ubuntu 18.04 / Ubuntu 16.04 et Debian 9

  4. Comment installer et configurer Squid Proxy sur Debian 11

  5. Comment installer ProFTPD sur Debian 8

Comment installer MySQL 8 sur Debian 10

Comment installer Todoman sur le serveur Debian 11

Comment installer et configurer le serveur Web Apache sur Debian 11

Comment installer FastPanel sur Debian 11

Comment installer I2P sur le serveur Debian :

Comment installer et activer le serveur SSH sur Debian 10