Puppet est un outil de gestion de configuration gratuit et open source qui vous aide à déployer et à gérer de manière centralisée les configurations de centaines de systèmes clients. Il est disponible pour les systèmes informatiques basés sur GNU/Linux, Mac, BSD, Solaris et Windows, publié sous licence Apache, écrit en langage « Ruby ». Ce guide vous aide à installer puppet sur CentOS 7 / RHEL 7.
Architecture de la marionnette :
Agent / Maître :
Dans cette architecture, un ou plusieurs serveurs exécutent l'application Puppet Master, généralement en tant qu'application Rack gérée par un serveur Web (comme Apache avec Passenger) et l'application Puppet Agent s'exécute sur les serveurs clients, généralement en tant que service d'arrière-plan.
Périodiquement, l'agent de marionnettes enverra des faits au marionnettiste et demandera un catalogue. Le maître compilera et renverra le catalogue de ce nœud, en utilisant plusieurs sources d'informations auxquelles il a accès.
L'architecture autonome :
Dans cette architecture, les serveurs clients exécutent l'application d'application de marionnettes (combinaison autonome des applications de maître de marionnettes et d'agent de marionnettes), généralement sous la forme d'une tâche planifiée ou d'une tâche cron.
Environnement :
Ici, je vais vous montrer comment configurer une marionnette en architecture maître/agent. Dans ce tutoriel, j'utiliserai deux systèmes CentOS 7 comme mentionné ci-dessous.
Maître des marionnettes :
Système d'exploitation :CentOS 7 MinimalIP Address :192.168.12.10HostName :server.itzgeek.local
Client marionnette :
Système d'exploitation :CentOS 7 Adresse IP minimale :192.168.12.20HostName :client.itzgeek.local
Prérequis :
Configurez le référentiel EPEL sur CentOS 7 / RHEL 7.
Assurez-vous que votre système (serveur de marionnettes et client) est capable de résoudre le nom d'hôte l'un de l'autre, soit utilisez le fichier /etc/hosts ou serveur DNS .
Pour avoir une configuration de marionnettes prête pour la production, nous devons utiliser apache avec passager. Pour obtenir le passager, téléchargez et placez le fichier repo dans /etc/yum.repos.d/
Remarque :Uniquement sur le serveur maître.
[root@server ~]# curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repoPour installer le maître/agent de marionnettes, nous aurions besoin de configurer le référentiel de marionnettes sur tous les nœuds. Activez le référentiel de laboratoires de marionnettes en installant ci-dessous rpm.
Remarque :Exécutez-le sur les nœuds maître et agent.
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpmInstallez et configurez Puppet sur CentOS 7 :
Maintenant, il est temps d'installer la marionnette. Installez le serveur de marionnettes à l'aide de la commande ci-dessous.
[root@server ~]# yum -y install puppet-serverComme dit précédemment, nous allons configurer la marionnette pour l'architecture maître/agent. Ainsi, ce nœud agira comme un nœud maître. Modifiez le fichier de configuration de la marionnette et modifiez les dns_alt_names .
[root@server ~]# vi /etc/puppet/puppet.conf[main]dns_alt_names =server,server.itzgeek.local certname =server.itzgeek.localSi cette machine est le seul maître de marionnettes dans votre environnement, exécutez la commande ci-dessous pour créer le certificat de maître de marionnettes.
[root@server ~]# puppet master --verbose --no-daemonizeInfo :création d'une nouvelle clé SSL pour caInfo :création d'une nouvelle demande de certificat SSL pour caInfo :empreinte digitale de la demande de certificat (SHA256) :81:C6:BB :8B:1D:71:4C:64:E1:13:54:1B:EC:CF:99:D8:85:90:D1:6C:E8:85:50:3E:03:41:BA:C5 :47:A7:4C:E5Notice :demande de certificat signée pour caInfo :création d'une nouvelle liste de révocation de certificatInfo :création d'une nouvelle clé SSL pour server.itzgeek.localInfo :chargement du fichier csr_attributes depuis /etc/puppet/csr_attributes.yamlInfo :création d'une nouvelle Demande de certificat SSL pour server.itzgeek.localInfo :empreinte digitale de la demande de certificat (SHA256) :FF:BE:D4:9B:E4:12:83:79:AE:BE:50:17:76:5F:F5:CD:5F :53:EA:5D:AA:5D:87:9E:7C:C4:BC:1B:8A:C6:FA:5CNavis :server.itzgeek.local a une demande de certificat en attenteNotice :demande de certificat signée pour server.itzgeek. localNotice :Suppression du fichier Puppet : : SSL : : CertificateRequest server.itzgeek.local à '/var/lib/puppet/ssl/ca/requests/server.itzgeek.local.pem'Notice :Suppression du fichier Puppet : :SSL ::CertificateRequest server.itzgeek.local à '/var/lib/puppet/ssl/certificate_requests/server.itzgeek.local.pem'Avis :Démarrage de la version 3.8.3 du maître PuppetUne fois que vous obtenez "Avis :Démarrage de la version principale de Puppet
", appuyez sur ctrl-C pour tuer le processus. Configurer un serveur Web prêt pour la production :
Puppet est livré avec un serveur Web maître de marionnettes de base, mais celui-ci ne peut pas être utilisé pour des charges réelles. Nous devons configurer un serveur Web de qualité de production avant de commencer à gérer nos nœuds avec Puppet.
[root@server ~]# yum -y install httpd httpd-devel mod_ssl ruby-devel rubygems gcc gcc-c++ pygpgme curlInstallez le module passager et apache.
[root@server ~]# yum install -y mod_passengerCréez trois répertoires pour l'application (un répertoire parent, un répertoire "public" et un répertoire "tmp" ), Copiez le fichier ext/rack/config.ru du code source de Puppet dans le répertoire parent et définissez la propriété du fichier config.ru.
[root@server ~]# mkdir -p /usr/share/puppet/rack/puppetmasterd[root@server ~]# mkdir /usr/share/puppet/rack/puppetmasterd/public /usr/share/puppet/ rack/puppetmasterd/tmp[root@server ~]# cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/[root@server ~]# chown puppet:puppet / usr/share/puppet/rack/puppetmasterd/config.ruAjoutez un hôte virtuel pour la marionnette en créant le fichier de configuration ci-dessous.
[root@server ~]# vi /etc/httpd/conf.d/puppetmaster.confAjoutez le contenu ci-dessous dans le fichier d'hôte virtuel, changez le vert entrées colorées selon votre environnement.
# vous voulez probablement régler ces paramètresPassengerHighPerformance onPassengerMaxPoolSize 12PassengerPoolIdleTime 1500# PassengerMaxRequests 1000PassengerStatThrottleRate 120Écoutez 8140sslengine sur sslprotocol all -sslv2 -sslv3 SSLCIPHERSuite EDH + Camellia:EDH + ARSA:EECDH + ARSA + AESGCM:EECDH + ARSA + SHA384:EECDH + ARSA + CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA :AES256-SHA:CAMELLIA128-SHA:AES128-SHA SSLHonorCipherOrder sur SSL CertificateFile /var/lib/puppet/ssl/certs/server.itzgeek.local.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/server.itzgeek.local.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Si Apache se plaint de signatures non valides sur la CRL, vous pouvez essayer de désactiver # la vérification de la CRL en commentant la ligne suivante, mais cela n'est pas recommandé. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem # Apache 2.4 introduit la directive SSLCARevocationCheck et la définit sur none # ce qui désactive effectivement la vérification CRL ; si vous utilisez Apache 2.4+, vous devez # spécifier 'chaîne SSLCARevocationCheck' pour utiliser réellement la CRL. # Chaîne SSLCARevocationCheck SSLVerifyClient facultatif SSLVerifyDepth 1 # L'option `ExportCertData` est nécessaire pour les avertissements d'expiration de certificat d'agent SSLOptions +StdEnvVars +ExportCertData # Cet en-tête doit être défini si vous utilisez un équilibreur de charge ou un proxy RequestHeader unset SS La Forwarded -Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e DocumentRoot /usr/share/puppet/rack/puppetmasterd/public RackBaseURI / /usr/share/puppet/rack/puppetmasterd/> Options Aucune AllowOverride None Ordonner autoriser, refuser autoriser de tous Redémarrez le serveur apache pour prendre effet sur l'hôte virtuel de la marionnette, pour ce faire, exécutez la commande suivante sur le terminal.
[root@server ~]# systemctl restart httpd.serviceDésactivez le service de marionnettes et activez le démarrage automatique du serveur apache au démarrage du système.
[root@server ~]# systemctl disable puppet.service[root@server ~]# systemctl enable httpd.servicePare-feu :
La marionnette écoute sur le port n° 8140; Configurez les tables IP pour l'autoriser.
[root@server ~]# firewall-cmd --zone=public --add-port=8140/tcp --permanent[root@server ~]# firewall-cmd --reloadInstallez Puppet sur les nœuds d'agent :
Sur votre ordinateur client, installez l'agent de marionnettes à l'aide de la commande ci-dessous.
Remarque :Vous devez avoir un référentiel de marionnettes configuré sur les nœuds d'agent.
[root@client ~]# yum -y install puppetModifiez le fichier de configuration de la marionnette et définissez les informations du maître de la marionnette sur la strophe client.
Remarque :Modifiez la valeur "serveur" en fonction de votre environnement. Dans mon cas, le serveur est "server.itzgeek.local"
[root@client ~]# vi /etc/puppet/puppet.conf[agent]server =server.itzgeek.localDémarrez la marionnette sur le nœud de l'agent et faites-la démarrer automatiquement au démarrage du système.
[root@client ~]# systemctl start puppet.service[root@client ~]# systemctl enable puppet.serviceVous obtiendrez les événements ci-dessous dans les journaux.
Oct 21 05:46:45 client systemd :Démarrage de l'agent Puppet... Oct 21 05:46:46 client systemd :Démarrage de l'agent Puppet.Oct 21 05:47:03 client systemd :Reloading.Oct 21 05:49 :10 client puppet-agent[2694] :N'a pas reçu de certificatSigner le certificat du 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 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.
[root@server ~]# liste de certificats de marionnettes"client.itzgeek.local" (SHA256) D4:88:EC:C5:0A:F7:5D:4E:32:C5:B3:61:E0:51 :7B:0C:CD:B3:49:9E:68:0B:E7:5D:75:19:1D:0B:92:8A:E7:C1Exécutez puppet cert sign pour signer une demande ou puppet cert sign –all pour signer toutes les demandes en attente.
[root@server ~]# puppet cert sign client.itzgeek.localNotice :demande de certificat signée pour client.itzgeek.localNotice :suppression du fichier Puppet::SSL::CertificateRequest client.itzgeek.local à '/var/lib/ marionnette/ssl/ca/requests/client.itzgeek.local.pem'Exécutez la commande suivante sur la machine cliente pour vérifier le certificat
[root@client ~]# puppet agent -tInfo :certificat de mise en cache pour client.itzgeek.localInfo :cache certificate_revocation_list pour caInfo :certificat de mise en cache pour client.itzgeek.localInfo :récupération de pluginfactsInfo :récupération de pluginInfo :catalogue de mise en cache pour client.itzgeek .localInfo :application de la version de configuration '1445401911'Info :création du fichier d'état /var/lib/puppet/state/state.yamlNotice :catalogue terminé exécuté en 0,09 secondeC'est tout. Maintenant, vous avez configuré avec succès le maître de marionnettes et un agent. Il est temps de créer un manifeste (paramétrage client). Restez à l'écoute.
Ce tutoriel concerne une ancienne version de Puppet Master, certains liens sont rompus et peuvent ne pas fonctionner comme prévu. Une nouvelle version est disponible ici :Comment installer Puppet 4.x sur CentOS 7 / RHEL 7.