Lorsque vous pensez à un outil de gestion de configuration, celui qui vous vient à l'esprit est Puppet. Puppet est un outil de gestion de configuration open source qui vous aide à déployer et à gérer les configurations de centaines de systèmes clients à partir d'un emplacement central.
Puppet facilite la vie de l'administrateur système en réduisant le temps consacré aux tâches répétitives et leur permet de travailler sur d'autres travaux productifs, garantit également que toutes les configurations sont cohérentes sur l'ensemble de l'infrastructure.
Puppet est disponible pour les systèmes informatiques basés sur Linux, Mac, BSD, Solaris et Windows, publié sous licence Apache, écrit en langage "Ruby".
Ce guide vous aide à installer Puppet Server sur Ubuntu 18.04 / Ubuntu 16.04 et Debian 9.
Architecture
Agent / Maître
Dans cette architecture, un ou plusieurs serveurs exécutent l'application Puppet Master et l'application Puppet Agent s'exécute sur des nœuds gérés (serveurs clients), généralement en tant que service d'arrière-plan.
L'agent de marionnettes enverra des faits au maître de marionnettes et demandera un catalogue dans l'intervalle particulier. Le marionnettiste compilera et renverra le catalogue de ce nœud particulier, en utilisant les sources d'informations auxquelles il a accès.
Architecture autonome
Dans cette architecture, le nœud client exécute l'application puppet apply, généralement en tant que tâche cron.
Environnement
Ici, nous allons configurer une marionnette en architecture maître/agent et utiliserons deux systèmes, comme mentionné ci-dessous.
Maître des marionnettes
Nom d'hôte : serveur.itzgeek.local
Adresse IP : 192.168.1.10
Client marionnette
Nom d'hôte : client.itzgeek.local
Adresse IP : 192.168.1.20
Prérequis
Installer NTP
L'heure doit être définie avec précision sur un maître de marionnettes car il agira en tant qu'autorité de certification pour signer les certificats provenant des nœuds clients. Nous utiliserons NTP à cette fin.
Installez le package NTP et effectuez la synchronisation de l'heure avec les serveurs NTP en amont.
sudo apt updatesudo apt install -y ntp ntpdatesudo ntpdate -u 0.ubuntu.pool.ntp.org
Fuseau horaire
Assurez-vous que tous les nœuds sont dans le même fuseau horaire en utilisant.
date
Sortie :
Mar 4 septembre 22:28:34 HAE 2018
S'il y a des écarts, modifiez-le en conséquence. Répertorier les fuseaux horaires disponibles.
timedatectl list-timezones
Définissez le fuseau horaire à l'aide de la commande suivante.
sudo timedatectl set-timezone America/New_York
DNS
L'agent Puppet utilise le nom d'hôte pour communiquer avec le serveur Puppet. Assurez-vous donc que le nœud de l'agent peut résoudre le nom d'hôte du serveur Puppet. Soit configurer /etc/hosts
fichier ou serveur DNS.
Fichier /etc/hosts :
sudo nano /etc/hosts
Ajoutez une entrée d'hôte similaire à la ligne ci-dessous.
192.168.1.10 serveur.itzgeek.serveur local
Configurer le référentiel PuppetLabs
Pour installer le maître/agent de marionnettes, nous aurions besoin de configurer un référentiel de marionnettes sur tous les nœuds.
### Ubuntu 18.04 ### wget https://apt.puppetlabs.com/puppet6-release-bionic.debsudo dpkg -i puppet6-release-bionic.debsudo apt update### Ubuntu 16.04 ### wget https://apt.puppetlabs.com/puppet6-release-xenial.debsudo dpkg -i puppet6-release-xenial.debsudo apt update### Debian 9 ### wget https://apt.puppetlabs.com/puppet6-release-stretch.debsudo dpkg -i puppet6-release-stretch.debsudo apt mise à jour
Sur Ubuntu 18.04, activez le référentiel d'univers, qui contient les packages nécessaires pour Puppet Server.
Installer le serveur de marionnettes
Puppet Server est le logiciel serveur qui s'exécute sur le nœud maître de marionnettes. Installez le serveur Puppet en utilisant la commande ci-dessous.
sudo apt install -y puppetserver
Le serveur de marionnettes est maintenant installé, ne démarrez pas encore le service de serveur de marionnettes.
Configurer le serveur de marionnettes
Allocation de mémoire (facultatif)
Par défaut, Puppet Server JVM est configuré pour utiliser 2 Go de RAM. Vous pouvez toujours personnaliser l'utilisation de la mémoire en fonction de la quantité de mémoire dont dispose votre nœud maître ; assurez-vous qu'il est suffisant pour gérer tous les nœuds qui y sont connectés.
Pour modifier la valeur de l'allocation de mémoire, modifiez le fichier ci-dessous.
sudo nano /etc/default/puppetserver
Modifiez la valeur affichée comme ci-dessous.
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"
Configuration des marionnettes
Configurations simples
Puppet Server ne nécessite aucune configuration et vous pouvez simplement démarrer le service puppetserver. Il utilisera les paramètres par défaut.
Par exemple :dns_alt_names (marionnette,
Configurations avancées (facultatif)
Ici, je vais modifier les paramètres de Puppet Server pour nos besoins.
sudo nano /etc/puppetlabs/puppet/puppet.conf
Placez les lignes ci-dessous. Modifiez-le en fonction de votre environnement.
[master]dns_alt_names =serveur.itzgeek.local,serveur [main]certname =server.itzgeek.localserver =server.itzgeek.localenvironment =productionruninterval =15m
Démarrer le serveur de marionnettes
Générez une autorité de certification de signature racine et intermédiaire pour Puppet Server.
configuration sudo /opt/puppetlabs/bin/puppetserver ca
Sortie :
Génération réussie. Trouvez vos fichiers dans /etc/puppetlabs/puppet/ssl/ca
Démarrez et activez le serveur Puppet.
sudo systemctl start puppetserversudo systemctl enable puppetserver
Installer l'agent de marionnettes
Configurez le référentiel Puppet sur votre nœud d'agent comme indiqué précédemment, puis installez l'agent Puppet à l'aide de la commande ci-dessous.
sudo apt install -y puppet-agent
L'agent marionnette utilise également certains des paramètres par défaut pour se connecter au nœud maître. Mais nous devons modifier le fichier de configuration de la marionnette et définir les informations du maître de la marionnette.
sudo nano /etc/puppetlabs/puppet/puppet.confDéfinir le serveur valeur selon votre nom d'hôte principal et certname comme nom d'hôte de votre client. Dans mon cas, le serveur est server.itzgeek.local et certname est client.itzgeek.local.
[main]certname =client.itzgeek.local serveur =serveur.itzgeek.local environnement =productionruninterval =15m
Vous pouvez modifier la valeur de runinterval dépend de l'exigence. Cela contrôle la durée d'attente d'un agent entre les deux demandes de catalogue.
Vous pouvez régler la valeur en secondes (30s ou 30) ou en minutes (30m) ou en heures (1hr).Démarrez l'agent marionnette sur le nœud et faites-le démarrer automatiquement au démarrage du système.
sudo /opt/puppetlabs/bin/puppet service de ressources puppetassure=running enable=true
Vous obtiendrez une sortie comme ci-dessous.
Remarque : /Service[puppet]/ensure : assurez-vous que 'stopped' est remplacé par 'running'service { 'puppet' : assure => 'running', enable => 'true',}
Signer le certificat de nœud d'agent sur le serveur maître
Dans un déploiement agent/maître, un administrateur doit approuver une demande de certificat pour chaque nœud d'agent avant que ce nœud puisse récupérer les configurations. Les nœuds d'agent demanderont des certificats pour la première fois qu'ils tenteront de s'exécuter.
Connectez-vous au serveur maître de marionnettes et exécutez la commande ci-dessous pour afficher les demandes en attente.
sudo /opt/puppetlabs/bin/puppetserver liste d'autorité de certification
Sortie :
Certificats demandés :client.itzgeek.local (SHA256) 07:B1:57:5B:DE:AF:9F:4A:DF:4A:D1:CD:C4:2A:F9:9F:D9:76 :CD:C5:F1:60:09:9C:B4:BA:76:D6:7B:3C:6F:0D
Exécutez la commande ci-dessous pour signer une demande.
sudo /opt/puppetlabs/bin/puppetserver ca signe --certname client.itzgeek.local
Sortie :
Demande de certificat signée avec succès pour client.itzgeek.local
Pour signer toutes les demandes de signature de certificat en une seule commande.
sudo /opt/puppetlabs/bin/puppetserver ca signe --all
Dans certains cas, vous devrez peut-être révoquer le certificat d'un nœud particulier pour le relire. Remplacez
sudo /opt/puppetlabs/bin/puppetserver peut révoquer --certname <AGENT_NAME>Répertoriez toutes les demandes signées et non signées. Vous devez exécuter sur le serveur maître.
sudo /opt/puppetlabs/bin/puppetserver ca list --allSortie :
Certificats signés :server.itzgeek.local (SHA256) E5:A4:93:45:EF:82:3B:FF:6E:36:D2:9A:F0:75:15:67:94:33 :06:2F:84:9F:D1:45:CE:C6:1C:86:D4:57:B8:25 noms alternatifs :["DNS:server.itzgeek.local", "DNS:server", "DNS :serveur.itzgeek.local"] client.itzgeek.local (SHA256) AB:3B:F0:D0:62:69:50:DD:50:45:CE:AD:A5:2C:4F:9E:EB:19 :D6:C6:9C:34:A3:C5:CD:84:8F:BA:50:04:4A:D0Vérifier l'agent marionnette
Une fois que le maître Puppet a signé votre certificat client, exécutez la commande suivante sur la machine cliente pour le tester.
sudo /opt/puppetlabs/bin/puppet agent --testSortie :
Info :Utilisation de l'environnement configuré 'production'Info :Récupération de pluginfactsInfo :Récupération de pluginInfo :Récupération de localesInfo :Mise en cache du catalogue pour client.itzgeek.localInfo :Application de la version de configuration '1558888335'Notice :Catalogue appliqué en 0,02 secondeCréer un manifeste
Manifest est un fichier de données qui contient la configuration du client, écrit dans le langage déclaratif de Puppet ou un Ruby DSL. Cette section couvre le manifeste de base pour créer un répertoire ainsi qu'un fichier sur la machine cliente.
Le fichier manifeste principal de la marionnette se trouve dans /etc/puppetlabs/code/environments/production/manifests répertoire. Créez un nouveau fichier manifeste.
sudo nano /etc/puppetlabs/code/environments/production/manifests/site.ppAjoutez maintenant les lignes suivantes au manifeste pour créer un répertoire sur le nœud client.
node 'client.itzgeek.local' { # S'applique uniquement au nœud mentionné. Si rien n'est mentionné, s'applique à tous. file { '/tmp/puppetdir' :# fichier de type de ressource assurer => 'répertoire', # Créer en tant que répertoire propriétaire => 'racine', # Propriété group => 'root', # Nom du groupe mode => '0755', # autorisations de répertoire }}Si la variable node n'est pas définie, ce manifeste s'appliquera à tous les nœuds connectés au puppet master.Maintenant, exécutez la commande suivante sur le nœud client pour récupérer les configurations.
sudo /opt/puppetlabs/bin/puppet agent --testSortie :
Info :Utilisation de l'environnement configuré 'production'Info :Récupération de pluginfactsInfo :Récupération de pluginInfo :Récupération de localesInfo :Catalogue de mise en cache pour client.itzgeek.localInfo :Application de la version de configuration '1558888460'Notice :/Stage[main]/Main/Node[client .itzgeek.local]/File[/tmp/puppetdir]/ensure :createdNotice :Catalogue appliqué en 0,16 secondeVérifiez que le répertoire a été créé sur le poste client.
ls -ld /tmp/puppetdir/Sortie :
drwxr-xr-x 2 root root 4096 26 mai 22:03 /tmp/puppetdir/Écrivons un manifeste pour créer un fichier avec du contenu.
node 'client.itzgeek.local' { # S'applique uniquement au nœud mentionné. Si rien n'est mentionné, s'applique à tous. file { '/tmp/puppetfile' :# fichier de type de ressource assurer => 'présent', # Assurez-vous qu'il existe propriétaire => 'racine', # Propriété group => 'root', # Nom du groupe mode => '0644', # autorisations de fichier content => "Ce fichier est créé par Puppet Server" # Contenu du fichier }}Vous pouvez accéder à la machine cliente et récupérer le catalogue comme indiqué dans l'exemple précédent ou attendre 15 minutes pour appliquer automatiquement le catalogue.
Conclusion
J'espère que cet article vous a aidé à installer Puppet Server sur Ubuntu 18.04 / Ubuntu 16.04 et Debian 9. Veuillez partager vos commentaires dans la section des commentaires.