Pour tester ce qui suit, il est important de commencer par l’article sur installation de Puppet Server se trouvant ici
2. Installation de Puppet client sur differentes machines:
# Tester le hostname
puppet-client@hostname -f
# Résultat
puppet-client
# Modifier le FQN dans le fichier /etc/hosts en tant que root
# Avant
127.0.0.1 localhost 127.0.0.1 puppet-client
# Après
127.0.0.1 puppet-client.localhost.loc puppet-client
localhost 127.0.0.1 puppet-client
# Saugarder le fichier.
# Tester à nouveau le hostname:
puppet-client@hotsname -f
# Résultat
puppet-client.localhost.loc
# Installer puppet Client
puppet-client@aptitude install puppet
# J’essaie de contacter le serveur Puppet
puppet-client@puppetd --test --waitforcert 15
# Résultat:
info: Creating a new certificate request for puppet-client.localhost.loc
info: Creating a new SSL key at /var/lib/puppet/ssl/private_keys
/puppet-client.localhost.loc.pem err:
Could not find server : getaddrinfo: Name or service not known err:
Could not request certificate: Certificate retrieval failed: Could not find server puppet
# La machine cliente (puppet-client) n’a pas réussi à contacter le serveur,
# Je vais donc modifier le fichier /etc/hosts et lui indiquer l'adresse ip du serveur.
# Avant
127.0.0.1 puppet-client.localhost.loc puppet-client localhost
127.0.1.1 puppet-client
# The following lines are desirable for IPv6capable hosts ::1
localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0
ip6-mcastprefix ff02::1 ip6-allnodes ff02::2
ip6-allrouters ff02::3 ip6-allhosts
# Après
127.0.0.1 puppet-client.localhost.loc puppet-client localhost
127.0.1.1 puppet-client
192.168.0.114 puppet
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
# Résultat:
peer certificate won’t be verified in this SSL session notice: Did not receive certificate
notice: Set to run one time’; exiting with no certificate
# Cela signifie que le certificat de puppet-client n’existe pas sur le serveur (puppet-master).
# Je vais le créer.
Création du certificat sur puppet-master
# Je liste les certificats qui existent sur le serveur
puppet-master@puppetca --list
# Résultat:
puppet-client.localhost.loc
# Cela veut dire que puppet-client n’a pas de certificat sur puppet-master
# Je liste tous les certificats du serveur
puppetca --list --all
# Résultat:
puppet-client.localhost.loc
+ puppet-master.localhost.loc
# Ce qui signifie que seul puppet-master possède un certificat en local mais pas puppet-client
# Je crée le certificat de puppet-client depuis le serveur
puppet-master@puppetca --sign puppet-client.localhost.loc
# Résultat:
puppet-client.localhost.loc notice: Signed certificate request for
puppet-client.localhost.loc notice:
Removing file Puppet::SSL::CertificateRequest puppet-client.localhost.loc at
'/var/lib/puppet/ssl/ca/requests/puppet-client.localhost.loc.pem'
# J’affiche tous les certificats
puppetca --list --all
# Resultat :
puppet-client.localhost.loc puppet-master.localhost.loc
# Le certificat est bien créé Il faut refaire test depuis puppet-cleint, en essayant de recontacter le serveur:
puppet-client@puppetd --test --waitforcert 15
# Résultat :
warning: peer certificate wont be verified in this SSL session notice:Got signed certificate
info: Retrieving plugins err: /File[/var/lib/puppet/lib]: Failed to generate
additional resources
during transaction: Cannot access mount[plugins] err: /File[/var/lib/puppet/lib]:
Failed to retrieve current state of resource: Cannot access mount[plugins]Could not describe /plugins: Cannot access mount[plugins]
info: No classes to store info: Caching catalog at /var/lib/puppet/state/localconfig.yaml
notice: Starting catalog run notice: //File[/tmp/testfile]/ensure: createdinfo: Creating state file
/var/lib/puppet/state/state.yaml notice: Finished catalog run in 0.08 seconds
# Je tape la commande suivante
ls -l /tmp
# Le fichier existe sur puppet-client
# There is also a problem of plugin.
# To fixe this, go in /etc/puppet/puppet.conf
#Avant
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter pluginsync=true [puppetmasterd] templatedir=/var/lib/puppet/templates
# Après
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter pluginsync=false
[puppetmasterd]
templatedir=/var/lib/puppet/templates
# Je refais le test
puppetd --test
# Résultat:
info: No classes to store info: Caching catalog at /var/lib/puppet/state/localconfig.yaml notice:
Starting catalog run notice: Finished catalog run in 0.08 seconds
# Je vais sur le serveur et je change le fichier manifest par défaut site.pp pour créer un autre fichier
# Avant
file { "/tmp/testfile": ensure => file }
# Après
file { "/tmp/testfile": ensure => file }
file { "/tmp/testnew": ensure => file }
#Sur puppet-client je lance la commande de test
# Test
puppet-client@puppetd --test
# Résultat:
info: No classes to store info: Caching catalog at /var/lib/puppet/state/localconfig.yaml
notice: Starting catalog run notice: //File[/tmp/testnew]/ensure: created
notice: Finished catalog run in 0.17 seconds
# Le nouveau fichier est bien créé sur puppet-client
Toutes les autres machines clientes sont installées de la même façon.
Vous trouverez des documentations ici:
Documentation de puppe:
http://docs.reductivelabs.com/
puppet dashbord sur lequel je vous présenterais dans un prochaine article:
http://www.puppetlabs.com/blog/a-tour-of-puppet-dashboard-0-1-0/
Le forum des utilisateurs de puppet:
http://groups.google.com/group/puppet-users?hl=en
