GNU/Linux >> Tutoriels Linux >  >> Cent OS

Installer et configurer Puppet sur CentOS 7 / RHEL 7

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.

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.repo 

Pour 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.rpm

Installez 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-server

Comme 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.local 

Si 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 Puppet

Une 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 curl

Installez le module passager et apache.

[root@server ~]# yum install -y mod_passenger

Cré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.ru

Ajoutez un hôte virtuel pour la marionnette en créant le fichier de configuration ci-dessous.

[root@server ~]# vi /etc/httpd/conf.d/puppetmaster.conf

Ajoutez 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 8140  sslengine 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.service

Dé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.service

Pare-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 --reload

Installez 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 puppet

Modifiez 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.local 

Dé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.service

Vous 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 certificat

Signer 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:C1

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

C'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.
Cent OS
  1. Installer et configurer HAProxy sur RHEL 8 / CentOS 8 Linux

  2. Comment installer et configurer R sur le système Linux RHEL 8 / CentOS 8

  3. Installer et configurer le serveur FTP sur CentOS 7 / RHEL 7 - (vsftpfd)

  4. CentOS / RHEL 7 :Comment installer et configurer telnet

  5. Comment installer et configurer Samba dans CentOS / RHEL

Comment installer et configurer Nagios Core sur CentOS 8 / RHEL 8

Comment installer et configurer le serveur VNC dans CentOS 7 / RHEL 7

Installer et configurer GlusterFS sur CentOS 7 / RHEL 7

Comment installer et configurer Jenkins sur CentOS 8 / RHEL 8

Comment installer et configurer MariaDB dans CentOS / RHEL 7

Comment installer et configurer VNC Server sur CentOS/RHEL 8