Puppet est un outil de gestion de configuration open source qui nous aide à automatiser l'infrastructure informatique, y compris le provisionnement, la gestion de la configuration et l'application de correctifs à des centaines de systèmes clients à partir d'un emplacement central.
Puppet est disponible pour les systèmes d'exploitation Linux, Mac, BSD, Solaris et Windows. Il est écrit en langage "Ruby" et publié sous licence Apache,
Ce guide vous aide à installer Puppet sur CentOS 8 / RHEL 8.
Architecture
Pupper est configuré dans une architecture agent-maître. Dans cette architecture, les nœuds gérés exécutent le logiciel de l'agent de marionnettes, en tant que service d'arrière-plan. D'autre part, un ou plusieurs serveurs exécutent l'application maître, c'est-à-dire. Serveur de marionnettes.
L'agent de marionnettes envoie périodiquement des faits au maître de marionnettes et demande un catalogue. Le maître compile et renvoie le catalogue de ce nœud particulier, en utilisant les sources d'informations auxquelles il a accès.
Environnement
Ici, nous allons configurer une marionnette en architecture serveur/agent.
Maître des marionnettes
Nom d'hôte : marionnetteserver.itzgeek.local
Adresse IP : 192.168.0.10
Système d'exploitation : CentOS 8
Client marionnette
Nom d'hôte : client.itzgeek.local
Adresse IP : 192.168.0.20
Système d'exploitation : CentOS 8
Prérequis
Installer NTP
La synchronisation des nœuds maître et client doit être synchronisée avec précision avec le serveur NTP, car le serveur Puppet agira en tant qu'autorité de certification.
Si vous devez configurer le serveur NTP, alors :
LIRE : Comment configurer le serveur NTP à l'aide de Chrony
Si vous devez configurer le client NTP, alors :
LIRE : Comment configurer le client NTP à l'aide de Chrony
Si nécessaire, modifiez également le fuseau horaire du système.
LIRE :Comment changer le fuseau horaire dans CentOS 8 / RHEL 8
DNS
L'agent Puppet utilise le nom d'hôte pour communiquer avec le serveur Puppet. Assurez-vous donc que les nœuds d'agent peuvent résoudre le nom d'hôte du serveur Puppet à l'aide du fichier /etc/hosts ou du serveur DNS.
Installer et configurer le serveur Puppet
Puppet Server est le logiciel serveur qui s'exécute sur le nœud maître. Puppet Server contrôle les configurations des nœuds gérés (puppet-agent).
Ajouter un référentiel
Pour installer le serveur Puppet, nous aurions besoin d'ajouter le référentiel de marionnettes en installant le package de configuration du référentiel.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Installer Puppet
Installez le serveur Puppet à l'aide de la commande ci-dessous.
yum install -y puppetserver
Allocation de mémoire
Par défaut, Puppet Server est configuré pour utiliser 2 Go de mémoire. Vous pouvez modifier l'allocation de mémoire en fonction du nombre de nœuds qui y sont connectés.
Pour cette démo, j'allouerai 512 Mo de mémoire.
Pour modifier la valeur de l'allocation de mémoire, modifiez le fichier ci-dessous.
vi /etc/sysconfig/puppetserver
Modifiez la valeur.
De :
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
À :
Pour 512 Mo, utilisez les paramètres ci-dessous.
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Configurer le serveur Puppet
Le fichier de configuration de Puppet se compose de deux sections nommées [master] et [main] pour le serveur et l'agent Pupper respectivement.
vi /etc/puppetlabs/puppet/puppet.conf
Modifiez le fichier en fonction de votre environnement. Les agents Pupper peuvent utiliser n'importe lequel des noms d'hôtes mentionnés dans les dns_alt_names pour se connecter au serveur Pupper.
# Configuration du serveur Pupper[master]dns_alt_names =puppetserver,puppetserver.itzgeek.local#Configuration de l'agent Puppet[main]certname =puppetserver.itzgeek.localserver =puppetserver.itzgeek.localruninterval =30m
Démarrer le serveur Puppet
Générez l'AC de signature racine et intermédiaire pour Puppet Server.
puppetserver ca setup
Sortie :la génération a réussi. Trouvez vos fichiers dans /etc/puppetlabs/puppet/ssl/caSi vous obtenez puppetserver:command not found, exécutez la source /etc/profile.d/puppet-agent.sh dans le terminal ou déconnectez-vous de la session en cours et reconnectez-vous.
Démarrez et activez le serveur Puppet.
systemctl start puppetserver
systemctl enable puppetserver
Pare-feu
Le serveur Puppet écoute sur le port 8140. Configurez donc le pare-feu pour permettre aux agents de se connecter au maître.
firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload
Installer et configurer l'agent Puppet
Ajouter un référentiel
Pour installer l'agent Puppet, nous aurions besoin d'ajouter le référentiel Puppet sur tous les nœuds.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Installer l'agent
Installez l'agent marionnette sur votre client à l'aide de la commande ci-dessous.
dnf install -y puppet-agent
Modifiez le fichier de configuration de la marionnette et définissez les informations du serveur Puppet.
Définissez la valeur du serveur en fonction du nom d'hôte de votre serveur Puppet. Dans mon cas, le serveur est puppetserver.itzgeek.local et certname est mon nom d'hôte client (client.itzgeek.local).
vi /etc/puppetlabs/puppet/puppet.conf
Réglez comme ci-dessous.
[main]server =puppetserver.itzgeek.localcertname =client.itzgeek.localruninterval =30m
Vous pouvez modifier la valeur de runinterval en fonction des besoins. Ce paramètre contrôle la durée d'attente de l'agent entre les deux demandes de catalogue. Vous pouvez définir la valeur en secondes (10 ou 10s), minutes (10m) et heures (1h).
Démarrez l'agent marionnette sur le nœud et faites-le démarrer automatiquement au démarrage du système.
puppet resource service puppet ensure=running enable=true
Output:Notice :/Service[puppet]/ensure : assurez-vous que 'stopped' est remplacé par 'running'service { 'puppet' : assure => 'running', enable => 'true', provider => 'systemd' ,}Si vous obtenez puppet:command not found, exécutez la source /etc/profile.d/puppet-agent.sh dans le terminal ou déconnectez-vous de la session en cours et reconnectez-vous.
Signer le certificat de nœud d'agent sur le serveur maître
Nous devons approuver une demande de certificat provenant de chaque nœud. Les nœuds d'agent demanderont des certificats pour la première fois s'ils tentent de s'exécuter.
Exécutez la commande ci-dessous sur le nœud de l'agent pour établir une connexion initiale. Vous pouvez ignorer les avertissements/erreurs.
puppet agent -t
Connectez-vous au serveur Pupper et exécutez la commande ci-dessous pour afficher les demandes en attente.
puppetserver ca list
Sortie :Certificats demandés :client.itzgeek.local (SHA256) 06:D8:8E:AE:CA:0B:B1:E7:90:B5:B9:1B:75:3C:95:69:D8 :EF:27:0A:5D:CC:45:BB:15:34:64:D2:6B:2C:CA:98
Exécutez la commande puppet cert sign pour signer une demande.
puppetserver ca signe --certname client.itzgeek.local
Sortie :demande de certificat signée avec succès pour client.itzgeek.local
Le serveur Puppet peut maintenant communiquer avec la machine cliente et contrôler le nœud.
Si vous avez plusieurs demandes de signature provenant de nœuds, vous pouvez signer toutes les demandes en une seule commande.
puppetserver ca sign --all
Parfois, vous devrez peut-être révoquer le certificat d'un nœud particulier pour le relire.
Remplacez
puppetserver peut révoquer --certname AGENT_NAME
Vous pouvez lister toutes les requêtes signées et non signées avec la commande ci-dessous.
puppetserver ca list --all
Sortie :Certificats signés :puppetserver.itzgeek.local (SHA256) E6:2C:6C:1E:9B:C6:AA:D9:84:09:F3:67:45:1B:36:C6:1F :FB:46:5F:92:64:37:19:E3:74:0C:0D:29:D5:C5:F6 noms alternatifs :["DNS:puppetserver.itzgeek.local", "DNS:puppetserver", " DNS:puppetserver.itzgeek.local"] extensions d'autorisation :[pp_cli_auth :true] client.itzgeek.local (SHA256) EF:D8:1A:F2:E9:56:A3:1F:DA:A9:8D:9B:71 :02:D8:52:F1:44:98:92:A7:5F:DE:FC:5F:55:37:97:EC:9C:9A:96
Vérifier le client Puppet
Une fois que le serveur Puppet a signé votre certificat client, exécutez la commande suivante sur la machine cliente pour le tester.
puppet agent --test
Sortie : Info :Utilisation de l'environnement configuré 'production'Info :Récupération de l'environnement de configuration 'production'Conclusion
C'est Al. J'espère que vous avez appris à installer Puppet sur CentOS 8 / RHEL 8. Pour en savoir plus, apprenez à créer un fichier manifeste simple pour créer un fichier et un répertoire sur le nœud client. Veuillez partager vos commentaires dans la section des commentaires.