Puppet client

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Procédure d'installation
Contexte Déploiement de l'agent Puppet historique (paquets séparés puppet/ruby), Puppet 2.x/3.x
Périmètre RHEL/CentOS 5, 6, 7 · Debian
Voir aussi Puppet · Puppet client 4 · Puppet-dashboard

Puppet client décrit l'installation historique de l'agent Puppet à partir des paquets séparés (puppet, ruby, augeas...), utilisée jusqu'à Puppet 3.x. Depuis Puppet 4, l'agent est distribué sous forme de paquet unique tout-en-un (puppet-agent, avec Ruby et les dépendances embarquées) — voir Puppet client 4 pour cette procédure plus récente.

Prérequis

Voir RUBY pour l'installation de l'interpréteur via les dépôts système (méthode recommandée sur les versions historiques, avant l'agent tout-en-un).

Installation du dépôt

Le dépôt officiel varie selon la version de la distribution :

RHEL/CentOS 6
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
RHEL/CentOS 5
rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-7.noarch.rpm
RHEL/CentOS 7
rpm -ivh http://yum.puppetlabs.com/el/7Client/products/x86_64/puppetlabs-release-7-11.noarch.rpm
Debian
wget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb

Note (à vérifier) : ces URL pointent vers l'ancien dépôt yum.puppetlabs.com/apt.puppetlabs.com, historique et probablement mort aujourd'hui — le domaine Forge/dépôts a migré vers puppet.com. À adapter selon la version de Puppet réellement ciblée.

Pour désactiver l'activation automatique du dépôt après installation (pour le réactiver manuellement au moment voulu) :

sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/puppetlabs.repo

Installation de l'agent

yum -y install puppet ruby ruby-rdoc augeas --enablerepo=puppetlabs*

Configuration minimale (ancienne syntaxe par variables d'environnement, RHEL/CentOS) :

vi /etc/sysconfig/puppet
PUPPET_SERVER=puppet-master.example.com
PUPPET_LOG=/var/log/puppet/puppet.log

Configuration principale, section [main] de /etc/puppet/puppet.conf :

vi /etc/puppet/puppet.conf
[main]
    # Serveur Puppet master
    server = puppet-master.example.com

    # Facts personnalisés
    pluginsync   = true
    pluginsource = puppet://$server/plugins
    factpath     = /var/lib/puppet/lib/facter

    report = true

Activation et démarrage du service :

chkconfig puppet on
puppet agent --daemonize
/etc/init.d/puppet start

Déclaration et signature du client

Après l'installation ci-dessus, l'agent se déclare seul auprès du master lors de son premier run.

Côté serveur, lister les demandes de certificat en attente :

puppet cert list

Accepter un client précis :

puppet cert sign agent01.example.com

Accepter toutes les demandes en attente :

puppet cert sign --all

Attention : puppet cert sign --all signe indistinctement toutes les demandes en attente, y compris une demande frauduleuse usurpant le nom d'un nœud légitime. À réserver à un environnement de labo ou une fenêtre de déploiement contrôlée ; en production, signer les certificats un par un après vérification du fingerprint affiché par l'agent.

Emplacement des demandes et des certificats signés :

  • Demandes en attente : /var/lib/puppet/ssl/ca/requests/
  • Certificats acceptés : /var/lib/puppet/ssl/ca/signed/

Côté client, déclencher un run et l'inscrire sur la console (si un ENC/dashboard est utilisé, voir Puppet-dashboard) :

puppet agent --test

Ancienne syntaxe (binaire puppetd, Puppet < 2.6)

Sur les toutes premières versions de Puppet, la commande était puppetd plutôt que puppet agent (les deux binaires ont ensuite fusionné) :

puppetd -t

Pour vérifier que l'agent peut bien écrire sur le système de fichiers si aucune erreur n'apparaît :

touch /tmp/puppet-test; chmod 777 /tmp/puppet-test
puppetd --server puppet-master.example.com

Réinitialiser le certificat d'un client

Supprimer le certificat côté master (à adapter avec le nom réel du nœud) :

find /var/lib/puppet/ssl -name agent01.example.com.pem -delete

Purger l'état local du client avant une nouvelle négociation :

find /var/lib/puppet -type f -print0 | xargs -0r rm

Relancer ensuite un puppet agent -t côté client puis re-signer côté master.

Voir aussi