Comment installer Puppet 4 sur Ubuntu 16.04

introduction

Puppet est un outil de gestion de la configuration qui aide les administrateurs système à automatiser l’approvisionnement, la configuration et la gestion d’une infrastructure de serveur. En planifiant à l’avance et en utilisant des outils de gestion de la configuration tels que Puppet, vous réduirez le temps consacré à la répétition des tâches de base et garantissez la cohérence et la précision des configurations sur l’ensemble de votre infrastructure.

Il existe deux types de marionnettes: Puppet Enterprise et Open Source Puppet. Les deux fonctionnent sur la plupart des distributions Linux, diverses plates-formes UNIX et Windows.

Dans ce tutoriel, nous montrerons comment installer Open Source Puppet 4 dans une configuration d’agent principal sous Ubuntu 16.04. Dans cette configuration, le serveur * Puppet master *, qui exécute le logiciel Puppet Server, peut être utilisé pour contrôler tous vos autres serveurs, appelés nœuds * Agent de marionnettes *.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de * trois serveurs Ubuntu 16.04 *, chacun avec un utilisateur non root avec les privilèges + sudo +. Pour en savoir plus sur la configuration d’un utilisateur avec des privilèges sudo, consultez notre Initial Initial Server Setup with Ubuntu 16.04. guider.

Un maître de marionnettes

Un serveur sera le * maître des marionnettes *. Le maître de marionnettes exécutera Puppet Server, qui nécessite beaucoup de ressources et nécessite:

  • au moins 4 Go de mémoire

  • au moins 2 cœurs de processeur

Pour gérer des infrastructures plus importantes, le maître de marionnettes aura besoin de plus de ressources.

Deux agents de marionnettes

Les deux autres serveurs seront * des nœuds d’agent Puppet *, gérés par le maître Puppet. Nous les appellerons + db1 + et + web1 +.

Lorsque ces trois serveurs sont en place, vous êtes prêt à commencer.

Étape 1 - Configuration de / etc / hosts

Les serveurs maîtres de marionnettes et les nœuds qu’ils gèrent doivent pouvoir communiquer entre eux. Dans la plupart des cas, cela sera réalisé à l’aide de DNS, configuré soit sur un service hébergé de manière externe, soit sur des serveurs DNS auto-hébergés conservés dans le cadre de l’infrastructure.

Le DNS est son propre domaine d’expertise, cependant, même sur les services hébergés, donc pour se concentrer sur les principes fondamentaux de Puppet et éliminer la complexité potentielle du dépannage pendant l’apprentissage, nous allons dans ce tutoriel utiliser le `+ / etc / hosts + `fichier à la place.

Sur chaque machine

Sur chaque ordinateur, éditez le fichier + / etc / hosts +. À la fin du fichier, spécifiez le serveur maître Puppet comme suit, en remplaçant l’adresse IP par votre maître Puppet:

sudo nano /etc/hosts

/ etc / hosts

. . .
   puppet
. . .

Lorsque vous avez terminé, enregistrez et quittez.

Étape 2 - Installation du serveur Puppet

Puppet Server est le logiciel qui transmet la configuration du maître de marionnettes aux autres serveurs. Il ne fonctionne que sur le maître de marionnettes; les autres hôtes exécuteront l’agent de marionnettes.

Nous allons activer le référentiel de collections officiel de Puppet Labs avec les commandes suivantes:

curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Lorsque + apt-get update est terminé, nous nous assurons d’installer le package` + puppet server` à partir du référentiel de Puppet Labs:

sudo apt-get install puppetserver

Appuyez sur + Y + pour continuer. Une fois l’installation terminée et avant de démarrer le serveur, nous allons prendre un moment pour configurer la mémoire.

Configurer l’allocation de mémoire

Par défaut, Puppet Server est configuré pour utiliser 2 Go de RAM. Vous pouvez personnaliser ce paramètre en fonction de la quantité de mémoire disponible du serveur maître et du nombre de nœuds d’agent qu’il va gérer.

Pour le personnaliser, ouvrez + / etc / default / puppetserver +:

sudo nano /etc/default/puppetserver

Recherchez ensuite la ligne + JAVA_ARGS + et utilisez les paramètres + -Xms + et + -Xmx + pour définir l’allocation de mémoire. Nous allons augmenter le nôtre à 3 gigaoctets:

/ etc / default / puppetserver

JAVA_ARGS="-Xmsg -Xmxg -XX:MaxPermSize=256m"

Enregistrez et quittez lorsque vous avez terminé.

Ouvrez le pare-feu

Lorsque nous démarrons, Puppet Server utilisera le port 8140 pour communiquer. Nous allons donc nous assurer qu’il est ouvert:

sudo ufw allow 8140

Ensuite, nous allons démarrer le serveur Puppet.

Démarrer le serveur de marionnettes

Nous allons utiliser + systemctl + pour démarrer le serveur Puppet:

sudo systemctl start puppetserver

Cela prendra du temps à compléter.

Une fois que nous sommes revenus à l’invite de commande, nous vérifierons que nous avons réussi car + systemctl + n’affiche pas le résultat de toutes les commandes de gestion de service:

sudo systemctl status puppetserver

Nous devrions voir une ligne qui dit “actif (en cours d’exécution)” et la dernière ligne devrait ressembler à quelque chose comme:

OutputDec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

Maintenant que nous sommes sûrs que le serveur est en cours d’exécution, nous allons le configurer pour qu’il démarre au démarrage:

sudo systemctl enable puppetserver

Avec le serveur en marche, nous sommes maintenant prêts à configurer Puppet Agent sur nos deux ordinateurs agents, + db1 + et + web1 +.

Étape 3 - Installation de l’agent de marionnettes

Le logiciel agent Puppet doit être installé sur tout serveur géré par le maître Puppet. Dans la plupart des cas, cela inclura tous les serveurs de votre infrastructure.

Activer le référentiel officiel de Puppet Labs

Nous allons d’abord activer le référentiel de collections officiel de Puppet Labs avec les commandes suivantes:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Installer le package de l’agent de marionnettes

Ensuite, nous installerons le paquet + puppet-agent:

sudo apt-get install puppet-agent

Nous allons démarrer l’agent et lui permettre de démarrer au démarrage:

sudo systemctl start puppet
sudo systemctl enable puppet

Enfin, nous allons répéter ces étapes sur + web1 +:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update
sudo apt-get install puppet-agent
sudo systemctl enable puppet
sudo systemctl start puppet

Maintenant que les deux nœuds d’agent exécutent le logiciel agent Puppet, nous allons signer les certificats sur le maître Puppet.

Étape 4 - Signature des certificats sur Puppet Master

La première fois que Puppet s’exécute sur un nœud d’agent, il envoie une demande de signature de certificat au maître Puppet. Avant que Puppet Server puisse communiquer avec le nœud agent et le contrôler, il doit signer le certificat de ce nœud agent particulier.

Répertorier les demandes de certificats en cours

Pour répertorier toutes les demandes de certificat non signées, exécutez la commande suivante sur le maître de marionnettes:

sudo /opt/puppetlabs/bin/puppet cert list

Il devrait y avoir une demande pour chaque hôte que vous avez configuré, qui ressemble à ceci:

Output:  "db1.localdomain"  (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C
 "web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

Un «+» devant un certificat indique qu’il a été signé. L’absence de signe plus indique que notre nouveau certificat n’a pas encore été signé.

Signer les demandes

Pour signer une demande de certificat unique, utilisez la commande + puppet cert sign +, avec le nom d’hôte du certificat tel qu’il apparaît dans la demande de certificat.

Par exemple, pour signer le certificat de db1, utilisez la commande suivante:

sudo /opt/puppetlabs/bin/puppet cert sign

Une sortie similaire à l’exemple ci-dessous indique que la demande de certificat a été signée:

Output:Notice: Signed certificate request for
Notice: Removing file Puppet::SSL::CertificateRequest  at '/etc/puppetlabs/puppet/ssl/ca/requests/.pem'

Le maître de marionnettes peut maintenant communiquer et contrôler le nœud auquel appartient le certificat signé. Vous pouvez également signer toutes les demandes en cours en même temps.

Nous allons utiliser l’option + - all + pour signer le certificat restant:

sudo /opt/puppetlabs/bin/puppet cert sign --all

Maintenant que tous les certificats sont signés, Puppet peut gérer l’infrastructure. Pour en savoir plus sur la gestion des certificats, consultez la feuille de triche How to Manage Puppet 4 Certificates.

Étape 5 - Vérification de l’installation

Puppet utilise un langage spécifique au domaine pour décrire les configurations système. Ces descriptions sont enregistrées dans des fichiers appelés «manifestes», qui ont une extension de fichier + .pp +. Vous pouvez en apprendre plus à ce sujet dans le guide Permet de bien commencer avec le code de la marionnette: Manifestes et modules, mais pour l’instant, nous allons créer une brève directive pour vérifier que le serveur Puppet peut gérer les agents comme prévu.

Nous allons commencer par créer le manifeste par défaut, + site.pp +, à l’emplacement par défaut:

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Nous utiliserons le langage spécifique au domaine de Puppet pour créer un fichier intitulé + it_works.txt + sur les nœuds d’agent situés dans le répertoire + tmp + qui contient l’adresse IP publique du serveur d’agent et définit les autorisations sur `+ -rw. -r - r - + `:

exemple site.pp

file {'/tmp/it_works.txt':                        # resource type file and filename
 ensure  => present,                             # make sure it exists
 mode    => '0644',                              # file permissions
 content => "It works on ${ipaddress_eth0}!\n",  # Print the eth0 IP fact
}

Par défaut, Puppet Server exécute les commandes de son manifeste toutes les 30 minutes. Si le fichier est supprimé, la directive + verify + le fera recréer. La directive + mode + définira les autorisations de fichier et la directive + content + ajoutera du contenu à la directive.

Nous pouvons également tester le manifeste sur un seul noeud en utilisant + puppet agent --test. Notez que + - test + n’est pas un indicateur pour un essai à blanc; s’il réussit, la configuration de l’agent sera modifiée.

Plutôt que d’attendre que le maître Puppet applique les modifications, nous allons appliquer le manifeste maintenant sur + db1 +:

sudo /opt/puppetlabs/bin/puppet agent --test

La sortie devrait ressembler à quelque chose comme:

OutputInfo: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for db1.localdomain
Info: Applying configuration version '1481131595'
Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0'
Notice: Applied catalog in 0.03 seconds

Lorsque cela sera fait, nous vérifierons le contenu du fichier:

cat /tmp/it_works.txt
Output It works on !

Répétez cette opération pour + web1 + ou, si vous préférez, vérifiez dans une demi-heure environ pour vérifier que le maître de marionnettes fonctionne automatiquement.

Toutes nos félicitations! Vous avez correctement installé Puppet en mode Maître / Agent.

Conclusion

Maintenant que vous disposez d’une installation de base de puppet agent / maître, vous êtes prêt à en apprendre davantage sur l’utilisation de Puppet pour gérer votre infrastructure de serveur. Consultez le didacticiel suivant: Démarrez avec le code de marionnette: Manifestes et modules.