5 décembre 2018 | Posted in:puppet

Vous avez maintenant une installation de puppet accouplé à l’interface web Foreman. (voir le tutorial ici).
Après avoir fait un petit point sur ce que fait puppet et ses principes de fonctionnement, nous allons maintenant voir comment rajouter un ordinateur que vous voulez gérer dans votre infrastructure Puppet. Nous verrons aussi rapidement les commandes principales du Puppet server.

Principe de Base de Puppet

Puppet c’est simple. Nous sommes sur le principe de base client/serveur. Le serveur étant le puppetserver, les clients sont les puppet-agent qui sont installés sur les ordinateurs ou serveurs à configurer, on les appelles aussi les nodes.

Le puppet-agent discute avec le puppetserver de manière crypter à l’aide d’un certificat propre à chaque node. Il en découle que lors de l’installation du Puppet agent, au premier lancement vous aurez un message d’erreur, il faudra d’abord valider la demande de certificat auprès du Puppetserver. Il en découle aussi que si vous réinstallez le Puppet agent après une réinstallation de système d’exploitation, il faudra révoquer l’ancien certificat pour accepter le nouveau.

L’agent Puppet embarque avec lui une couche logiciel qui s appelle Facter. Cet Outil va faire un état des lieux et mettre à disposition de nombreuses informations sous forme de variable. Le gros intérêt est que nous allons pouvoir grâce à ces variables scripter nos installations pour les rendre modulables suivant la machines.

Dans le Puppetserver, nous pouvons définir des environnements qui représentent par exemple des services (compta, bureau d’étude, serveur) en production ou en phase de test. L’agent Puppet lors de son installation sera configuré pour être raccordé à un environnement.

Chaque environnement dispose de ses manifests, ceux sont les fichiers qui décrivent l’état dans lequel le node doit se trouver. Lorsque vous installer l’agent vous définissez l’environnement auquel vous rattachez votre node. A chaque lancement, l agent va demander au Puppetserver l’état dans lequel il doit se trouver , le comparer grâce à Facter et appliquer les modifications.

Puppet peut :

  • installer un logiciel ou le désinstaller
  • installer une imprimante réseaux
  • modifier des fichiers textes
  • gérer des utilisateurs, groupes et acl
  • modifier des bases de registres
  • déposer des fichiers

Pour gérer tout cela, le Puppetserver se base sur des modules, la liste des modules installables est disponible ici : liste des modules puppet (en Anglais)

Ajout d’un ordinateur

Afin de télécharger la bonne version de l’agent, connectez vous sur votre serveur Puppet :

puppet status
vous devriez avoir un résultat comme suit :

{
"is_alive": true,
"version": "5.5.8"
}

Nous allons donc télécharger l’agent pour la version 5.5.8.

Sous Windows

Lien pour télécharger votre agent puppet : https://downloads.puppetlabs.com/windows/puppet5/
Lien vers la documentation en anglais : https://puppet.com/docs/puppet/5.5/install_windows.html

Après avoir télécharger votre installeur en 32 ou 64 bits, voici les etapes :

next installation puppet agent windows

licence installation puppet agent windows

1 on accepte, 2 suivant

parametre installation puppet agent windows

1 url de votre puppet master , 2 suivant

installation puppet agent windows

fin installation puppet agent windows

Voila votre agent est installé, mais ce n’est pas encore fini.

Nous devons maintenant faire le nécessaire pour le certificat.

Pour cela lancer une première fois l agent Puppet

lancement puppet agent windowsVous aurez alors ce résultat :

puppet agent certificat nokComme vous pouvez le voir, pas de certificat trouvé.

Il faut néanmoins faire cette étape qui permet au Puppetserver de savoir qu’un agent est en attente de validation.

Suivez l’étape Autorisation du certificat

Lorsque cela est fait relancer votre Puppet agent, vous aurez alors ce résultat :

puppet agent cert ok

Le fichier de configuration de l’agent se trouve  par défaut:
C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf
Vous pourrez y définir votre environnement pour cet agent, il est par défaut sur production.

Sous Linux

Lien vers la documentation en anglais : https://puppet.com/docs/puppet/5.5/install_linux.html

Tout comme pour le serveur on commence par rajouter le dépôt Puppet :

cd && wget https://apt.puppetlabs.com/puppet5-release-stretch.deb
dpkg -i puppet5-release-stretch.deb

Le fichier sources pour apt est installé nous allons maintenant faire en sorte que nous soyons bien sur Puppet version 5.

vim /etc/apt/sources.list.d/puppet.list

changez :
deb http://apt.puppetlabs.com stretch puppet
en
deb http://apt.puppetlabs.com stretch puppet5

On installe le paquet puppet-agent
apt update && apt install puppet-agent

On ajoute maintenant à notre terminal le PATH pour l’exécutable Puppet.
echo "PATH=\$PATH:/opt/puppetlabs/puppet/bin" >> ~/.bashrc
source .bashrc

Nous devons maintenant configurer notre agent puppet :

Éditez le fichier /opt/puppetlabs/puppet/puppet.conf et coller ceci à la fin :

[main]
certname = nom.machine
server = url.puppetserver
environment = production

Modifiez les éléments en gras suivant votre configuration.
Nous lancons maintenant la génération du certificat :
puppet agent --test
Voici le résultat :

Suivez l’étape Autorisation du certificat

Relancez la dernière commande :
puppet agent --test

puppet agent debian test ok

Autorisation du certificat

Comme je vous l’expliquez précédemment il faut maintenant autoriser le certificat . Depuis le serveur puppet, tapez ceci pour voir les certificats en attente de validation :

puppet cert list
vous aurez alors ce résultat :

puppet cert listOn voit que nous avons une machine w7-test-ibe en attente.

Nous allons la rajoutez

puppet cert sign w7-test-ibe
puppet cert sign
Voila votre agent est maintenant opérationnel.

Be the first to comment.

Leave a Reply


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*