GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer et configurer Puppet 4 sur CentOS et Ubuntu ? [Maître et agent]

Puppet, un outil de gestion de configuration populaire pour les systèmes basés sur Unix et Windows qui permet à un administrateur d'automatiser facilement les tâches d'administration système répétitives et sujettes aux erreurs - qui comprend le provisionnement, l'installation de packages/logiciels, les configurations et la gestion de l'ensemble de l'infrastructure. Puppet est disponible en deux versions :Puppet Enterprise et Puppet open source. Comme son nom l'indique, la version entreprise est un produit commercial et la version open source est téléchargeable gratuitement. Ce didacticiel explique comment installer et configurer l'open source Puppet (version 4) sur les systèmes basés sur CentOS et Ubuntu.

Avant de commencer la procédure d'installation, comprenons l'architecture de puppet.

Architecture maître/agent de marionnettes

Puppet fonctionne généralement sur la base du modèle client/serveur - c'est une architecture basée sur maître/agent, à savoir Puppet Master et Puppet Agent. Le maître Puppet contrôle les informations de configuration et les nœuds d'agent Puppet gérés demandent leurs propres catalogues de configuration. Le schéma ci-dessous illustre le flux de communication entre les nœuds maître et agent.

Qu'est-ce qu'un catalogue ?

Le catalogue est un document qui contient des informations sur l'état souhaité d'un système. Le Puppet master compile le catalogue et les agents Puppet appliquent ceux-ci.

Environnement d'installation de Puppet

Dans ce tutoriel, j'utiliserai deux nœuds :puppetmaster.test.in (Puppet Master) et puppetagent.test.in (Puppet Agent) (ce sont des machines virtuelles exécutées sur OpenStack)

Comment installer et configurer Puppet 4 ?

Étape 1 : La première étape consiste à vérifier la visibilité du réseau entre le nœud maître et le nœud agent. Vous devrez vous assurer que ces domaines sont résolus via DNS ou à partir du fichier hosts.

Sur le nœud Puppet Master :

# ping puppetagent
 PING puppetagent.test.in (10.180.141.126) 56(84) bytes of data.
 64 bytes from puppetagent.test.in (10.180.141.126): icmp_seq=1 ttl=64 time=0.347 ms
 --- puppetagent.test.in ping statistics ---
 1 packets transmitted, 1 received, 0% packet loss, time 0ms
 rtt min/avg/max/mdev = 0.347/0.347/0.347/0.000 ms

Sur le nœud de l'agent Puppet :

# ping puppetmaster
 PING puppetmaster.test.in (10.180.141.125) 56(84) bytes of data.
 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=1 ttl=64 time=0.711 ms
 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=2 ttl=64 time=0.316 ms
 --- puppetmaster.test.in ping statistics ---
 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
 rtt min/avg/max/mdev = 0.316/0.513/0.711/0.198 ms

Étape 2 : Installer NTP

Le nœud Puppet Master agira comme un C certificat A autorité (CA) et émettre des certificats pour les nœuds d'agent. Cela signifie que le nœud maître doit se synchroniser avec l'heure appropriée pour éviter les problèmes lors de l'émission de certificats aux nœuds agents. Vous devez donc installer NTP et le synchroniser avec le serveur de temps de votre choix.

Vérifiez les fuseaux horaires disponibles dans le nœud maître :

# timedatectl list-timezones

Définissez le fuseau horaire régional approprié :

# timedatectl set-timezone Asia/Kolkata

Installer NTP :

# yum install ntp

Synchroniser avec le serveur de temps de votre choix :

# ntpdate pool.ntp.org

Ouvrez ntp.conf et ajoutez les serveurs de temps de votre choix.

# vim /etc/ntp.conf

Enregistrez et quittez.

Démarrer et activer le service NTP :

# systemctl restart ntpd
# systemctl enable ntpd

Remarque  :Vous pouvez également configurer NTP sur les nœuds de l'agent. Pour ce faire, suivez simplement l'étape 2 sur les nœuds de l'agent Puppet.

Installer Puppet Server (sur le nœud maître)

Le serveur Puppet est un programme qui s'exécute sur le nœud maître Puppet et, comme illustré dans le diagramme d'architecture, ce service créera un catalogue et transmettra les configurations aux nœuds de l'agent Puppet.

Étape 1 : Pour installer les services Puppet, vous devez activer le référentiel de collection Puppet ou les packages de publication. Pour les systèmes d'exploitation basés sur Yum, vous pouvez trouver les packages sur yum.puppetlabs.com et pour les systèmes basés sur Apt sur apt.puppetlabs.com .

Sur CentOS, j'utiliserai un référentiel de marionnettes basé sur des packages rpm.

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
puppetlabs-release-pc1-1.0.0-2.el################################# [100%]

Sur Ubuntu :

# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb
Selecting previously unselected package puppetlabs-release-pc1.
(Reading database ... 205725 files and directories currently installed.)
Preparing to unpack puppetlabs-release-pc1-xenial.deb ...
Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ...
Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
# apt-get update

Installer le package du serveur Puppet :

Sur CentOS :

# yum -y install puppetserver

Sur Ubuntu :

# apt-get install puppetserver

Démarrer le serveur Puppet :

# systemctl start puppetserver

(ou)

# service puppetserver start

Activer le démarrage du serveur de marionnettes lors du démarrage du système

# systemctl enable puppetserver

(ou)

# chkconfig puppetserver on

Installation de l'agent Puppet (sur les nœuds de l'agent)

Nous allons installer le service Puppet Agent sur les nœuds d'agent et ce sont les nœuds qui reçoivent le catalogue du nœud maître Puppet et les appliquent.

Activer le dépôt de collection Puppet :

# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm

Sur Ubuntu :

# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb
Selecting previously unselected package puppetlabs-release-pc1.
(Reading database ... 205725 files and directories currently installed.)
Preparing to unpack puppetlabs-release-pc1-xenial.deb ...
Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ...
Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
$ sudo apt-get update

Installer l'agent Puppet :

Sur CentOS :

# yum -y install puppet-agent

Sur Ubuntu :

# apt-get install puppet-agent

Démarrer l'agent de marionnettes :

Par défaut, l'agent désignera le nœud maître Puppet comme "marionnette". La commande ci-dessous affichera également le nom d'hôte que l'agent utilisera pour se connecter au maître.

# /opt/puppetlabs/puppet/bin/puppet agent --configprint server
puppet
# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
 Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
 service { 'puppet':
 ensure => 'running',
 enable => 'true',
 }

Remarque  :Recherchez le serveur réglage dans puppet.conf pour changer le nom d'hôte du Puppet Master.

Remarque  :Par défaut, Puppet sera installé sous /opt/puppetlabs dossier.

Demander un certificat pour le nœud de l'agent à l'autorité de certification

Le nœud maître Puppet agira en tant qu'autorité de certification, qui signe le certificat des nœuds agents.

# /opt/puppetlabs/puppet/bin/puppet agent -t
 Info: Caching certificate for ca
 Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
 Info: Creating a new SSL certificate request for puppetagent.test.in
 Info: Certificate Request fingerprint (SHA256): BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A
 Info: Caching certificate for ca
 Exiting; no certificate found and waitforcert is disabled

Sur le nœud Puppet Master – Signer la demande de certificat de l'agent

Répertoriez les demandes de certificat en cours :

# /opt/puppetlabs/puppet/bin/puppet cert list
  "puppetagent.test.in" (SHA256) BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A

Signer le certificat :

# /opt/puppetlabs/puppet/bin/puppet cert sign puppetagent.test.in
Notice: Signed certificate request for puppetagent.test.in
Notice: Removing file Puppet::SSL::CertificateRequest puppetagent.test.in at '/etc/puppetlabs/puppet/ssl/ca/requests/puppetagent.test.in.pem'

Afficher toutes les demandes signées :

# /opt/puppetlabs/puppet/bin/puppet cert list --all
+ "puppetagent.test.in"  (SHA256) 0F:41:D0:67:78:BB:7B:48:F8:4B:10:10:C4:F9:FD:DD:46:19:34:4B:BE:4D:6F:4B:2F:45:57:86:33:C2:BC:45
+ "puppetmaster.test.in" (SHA256) 4A:F3:F7:C0:81:7D:76:49:77:31:81:B1:70:50:AE:EE:F9:49:95:22:B0:24:0C:08:C3:5E:30:E6:29:75:28:07 (alt names: "DNS:puppet", "DNS:puppetmaster.test.in")

Et vous avez terminé ! Votre première infrastructure de marionnettes est prête.

Testons Puppet

Puppet utilise un outil appelé Facter pour recueillir des informations (faits) sur les agents marionnettes. Par défaut, les informations telles que le nom du système d'exploitation, la version, le nom d'hôte, l'adresse IP, les clés SSH, etc. sont collectées. Mais cela vous permet également d'ajouter des faits personnalisés, dont je parlerai dans un article séparé.

En quoi les faits sont utiles ?

Lors de la création d'un modèle de configuration, vous souhaiterez peut-être récupérer automatiquement un fait (par exemple, l'adresse IP d'un nœud d'agent) et le remplir à l'emplacement approprié. De même, vous souhaiterez peut-être lire le nom d'hôte d'un nœud d'agent et l'utiliser dans le modèle de configuration.

La commande ci-dessous (exécutez-la sur le nœud maître) répertorie tous les faits rassemblés d'un nœud agent.

# /opt/puppetlabs/puppet/bin/facter

Exemple de résultat :

:::::::::::::::::::::::::::::::
partitions => {
/dev/vda1 => {
filesystem => "xfs",
mount => "/",
size => "39.99 GiB",
size_bytes => 42943138304,
uuid => "6c8f1327-a7c0-40a2-8bb3-89ea95a69d82"
}
}
path => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
processors => {
count => 2,
isa => "x86_64",
models => [
"Intel Core Processor (Haswell, no TSX)",
"Intel Core Processor (Haswell, no TSX)"
],
physicalcount => 2
}
:::::::::::::::::::::::::::::::::::::::::

C'est ça! Vous devez maintenant comprendre les manifestes et les modules pour utiliser efficacement Puppet .


Ubuntu
  1. Comment installer et configurer Redis sur Ubuntu 18.04

  2. Comment installer et configurer Redmine sur Ubuntu 18.04

  3. Comment installer et configurer Samba sur Ubuntu 18.04

  4. Installez Puppet Master et Agent sur Ubuntu 20.04

  5. Comment installer le maître et le client Puppet dans Ubuntu 14.04

Installer et configurer Puppet sur CentOS 7 / RHEL 7

Comment installer et configurer OpenVAS 9 sur Ubuntu

Comment installer et configurer Redis dans Ubuntu 20.04

Comment installer et configurer Redis sur CentOS 8

Comment installer et configurer Neo4j sur Ubuntu 20.04

Comment installer et configurer Smartctl sur CentOS/RHEL 8 et Ubuntu 20.04