[TUTO] Installer PuppetMaster OpenSource (en cours)

Installer PuppetMaster OpenSource (en cours) [TUTO] - Réseaux - Réseaux grand public / SoHo

Marsh Posté le 21-01-2014 à 16:42:46    

SALUT,  :hello:  
 
étant donné que j'ai galéré pour mettre mon master en place, je vous propose ma version. En esperant aider certain :)
 
Voici un tuto donc, en complément de la doc officielle : http://docs.puppetlabs.com/guides/installation.html
 
+--------------------------------------------------------+
|Red Hat Enterprise Linux Server release 6.5 (Santiago) |
+--------------------------------------------------------+
 

  • puppet version : 3.4.2


  • IpTables stoppé


_________________________________________________________________________________________________________
 
 
POST INSTALLATION
 

Code :
  1. yum update


 
installation de ruby :
 
1- Modifier les Repo si besoin
 

Code :
  1. [root@rennspocpuppet]# yum install ruby-rdoc
  2. Dependencies Resolved
  3. ================================================================================
  4. Package               Arch        Version                    Repository   Size
  5. ================================================================================
  6. Installing:
  7. ruby-rdoc             x86_64      1.8.7.352-12.el6_4         Server      376 k
  8. Installing for dependencies:
  9. compat-readline5      x86_64      5.2-17.1.el6               Server      129 k
  10. ruby                  x86_64      1.8.7.352-12.el6_4         Server      534 k
  11. ruby-irb              x86_64      1.8.7.352-12.el6_4         Server      313 k
  12. ruby-libs             x86_64      1.8.7.352-12.el6_4         Server      1.6 M
  13. simontuto
  14. Transaction Summary
  15. ================================================================================
  16. Install       5 Package(s)
  17. Total download size: 3.0 M
  18. Installed size: 10 M


 
 
 
2- Install du rpm

Code :
  1. [root@rennspocpuppet tmp]# rpm -ivh rubygems-1.3.7-5.el6.noarch.rpm
  2. Preparing...                ########################################### [100%]
  3. 1:rubygems               ########################################### [100%]


 
Le rpm est difficilement trouvable sur la toile, je l'ai up : http://r07tbo.1fichier.com/
 
ou
 
http://uploadhero.co/dl/33fb78a4
 
 
 
INSTALLATION
 
Création de l’utilisateur PUPPET avant l’installation :
 

Code :
  1. [root@rennspocpupmaster ~]# mkdir /usr/local/home
  2. [root@rennspocpupmaster ~]# adduser -c "Puppet user" -d /usr/local/home/puppet -m -U -s
  3. /bin/bash puppet


 
Installation du serveur PuppetMaster
 
Ajout dans un premier temps le repository :
 

Code :
  1. [root@rennspocpuppet ~]# rpm -ivh https://yum.puppetlabs.com/el/6/pro [...] noarch.rpm
  2. Retrieving https://yum.puppetlabs.com/el/6/pro [...] noarch.rpm
  3. warning: /var/tmp/rpm-tmp.1NtQxQ: Header V4 RSA/SHA1 Signature, key ID 4xd6ec30: NOKEY
  4. Preparing...                ########################################### [100%]
  5.    1:puppetlabs-release     ########################################### [100%]


 
Puis  

Code :
  1. [root@rennspocpuppet ~]# yum install puppet-server
  2. Installed:
  3.   puppet-server.noarch 0:3.4.2-1.el6
  4. Dependency Installed:
  5.   augeas-libs.x86_64 0:1.0.0-5.el6  facter.x86_64 1:1.7.4-1.el6
  6.   hiera.noarch 0:1.3.0-1.el6        libselinux-ruby.x86_64 0:2.0.94-5.3.el6_4.1
  7.   puppet.noarch 0:3.4.2-1.el6       ruby-augeas.x86_64 0:0.4.1-1.el6
  8.   ruby-rgen.noarch 0:0.6.5-1.el6    ruby-shadow.x86_64 0:1.4.1-13.el6
  9.   rubygem-json.x86_64 0:1.5.5-1.el6
  10. Complete!


 
Vérification :
 

Code :
  1. [root@rennspocpuppet ~]# rpm -qa | grep puppet
  2. puppet-3.4.2-1.el6.noarch
  3. puppet-server-3.4.2-1.el6.noarch
  4. puppetlabs-release-6-7.noarch


 
 
Configuration de puppet.conf
 
faire un back up :  
 

Code :
  1. cp puppet.conf puppet.conf.old


 
puis éditez la conf dans /etc/puppet/:
 
 
vi puppet.conf
 
 

Code :
  1. [main]
  2.         logdir=/var/log/puppet
  3.         vardir=/var/lib/puppet
  4.         ssldir=/var/lib/puppet/ssl
  5.         rundir=/var/run/puppet
  6.         factpath=$vardir/lib/facter
  7.         templatedir=$confdir/templates
  8. [master]
  9.         report=true
  10.         reports=log,store
  11.         modulepath=/etc/puppet/modules
  12. [agent]
  13.         server=rennspocpuppet.domain


 
Ps: Le master est son propre Agent
 
 

  • Démarrage des Services


 

Code :
  1. [root@rennspocpuppet puppet]# /etc/init.d/puppetmaster start
  2. Starting puppetmaster:                             [ OK  ]
  3. [root@rennspocpuppet puppet]# /etc/init.d/puppet start
  4. Starting puppet agent:                                     [  OK  ]


 
 
Certificat
 
Sur le client faire une demande de certificat :
 

Code :
  1. [root@rennspocpupsrv01 ~]# puppet agent --server rennspocpuppet.domain --waitforcert 60 --test
  2. Info: Retrieving plugin
  3. Info: Caching catalog for rennspocpupsrv01.domain


 
Vérifier que de base le répertoire des requests est vide sinon celà peut causer des erreurs ( /etc/puppet/ssl/certificate_requests)
 
Sur le master, il faut signer ce certificat :
 
Vérif de la présence du nouveau certif :

Code :
  1. [root@rennspocpuppet puppet]# puppet cert list --all
  2.   "rennspocpupsrv01.domain" (SHA256) 53:C0:D4:26:51:39:24:B8:C6:BC:05:E2:99:23:2F:A9:E7:C7:CE:A5:25:E6:D4:13:90:5D:BD:48:D6:3A:F3:E7*
  3. + "rennspocpuppet.domain"   (SHA256) A7:AD:86:69:B2:4B:C2:XT:2A:85:5D:77:52:A4:00:74:EC:70:7C:B4:19:EF:C9:86:10:02:DE:B7:C7:EA:E4:DE (alt names: "DNS:puppet", "DNS:puppet.domain", "DNS:rennspocpuppet.domain" )**
  4. *en gras : le nouveau certificat en attente d’être signé
  5. **le certificat local du master


 
Signons-le via :
 

Code :
  1. [root@rennspocpuppet puppet]# puppet cert --sign rennspocpupsrv01.domain
  2. Notice: Signed certificate request for rennspocpupsrv01.domain
  3. Notice: Removing file Puppet::SSL::CertificateRequest rennspocpupsrv01.domain at '/var/lib/puppet/ssl/ca/requests/rennspocpupsrv01.domain.pem'


 
 
Sur le client :
 
le client retourne :  
 

Code :
  1. Info: Applying configuration version '1390312822'
  2. Notice: Finished catalog run in 0.02 seconds


 
Vérifier que le certif est bien enregistré :
 
 

Code :
  1. [root@rennspocpuppet puppet]# puppet cert list --all
  2. + "rennspocpuppet.domain"   (SHA256) A7:AD:86:69:B2:4B:C2:EF:2A:85:5D:77:52:A4:00:74:EC:70:7C:B4:19:EF:C9:86:10:02:DE:B7:C7:EA:E4:DE (alt names: "DNS:puppet", "DNS:puppet.domain", "DNS:rennspocpuppet.domain" )
  3. + "rennspocpupsrv01.domain" (SHA256) 7A:01:AF:4A:A9:1B:69:16:94:69:29:2E:15:FF:64:CF:93:A9:0C:74:B7:2D:D8:F4:1B:EC:AE:DF:58:DA:E3:F7


 
 
À présent le client communique avec le Puppet Master, voyons à présent l’application de “manifests”
 
 

Code :
  1. ERREURS RENCONTREES : (tail -f /var/log/puppet/masterhttp.log)
  2. ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=SSLv3 read client certificate A: tlsv1 alert unknown ca
  3. Probleme dû au fichier de conf et le mauvais repertoire SSL référencé


 
 

  • Et le client ???


L'installation est à peu prEs pareil. Sauf qu'il ne faut pas installer puppet master. Il faut cependant ajouter le user (voir ci-dessus), ruby etc..
 
La conf de mon client : puppet.conf
 

Code :
  1. [main]
  2.     # The Puppet log directory.
  3.     # The default value is '$vardir/log'.
  4.     logdir = /var/log/puppet
  5.     # Where Puppet PID files are kept.
  6.     # The default value is '$vardir/run'.
  7.     rundir = /var/run/puppet
  8.     # Where SSL certificates are kept.
  9.     # The default value is '$confdir/ssl'.
  10.     #Serveur maitre
  11.     server=rennspocpuppet.domain
  12. [agent]
  13.     # The file in which puppetd stores a list of the classes
  14.     # associated with the retrieved configuratiion.  Can be loaded in
  15.     # the separate ``puppet`` executable using the ``--loadclasses``
  16.     # option.
  17.     # The default value is '$confdir/classes.txt'.
  18.     classfile = $vardir/classes.txt
  19.     # Where puppetd caches the local configuration.  An
  20.     # extension indicating the cache format is added automatically.
  21.     # The default value is '$confdir/localconfig'.
  22.     localconfig = $vardir/localconfig


 
 
Puis démarrer le puppet agent ⇒       /etc/init.d/puppet start
 
 
Les Manifestes
 
Pour se familiariser avec les commandes, j’ai bêtement suivi les premieres instructions de la docs officielle :

Code :
  1. http://docs.puppetlabs.com/learning/manifests.html


 
Créer les fichiers dans /root/examples/ , puis appliquer les manifests via puppet apply *.pp . La première partie se fait en local.

Code :
  1. [root@rennspocpuppet manifests]# cat /etc/puppet/manifests/site.pp
  2. file {'/tmp/test1':
  3.       ensure  => file,
  4.       content => "Hi.\n",
  5.     }
  6.     file {'/tmp/test2':
  7.       ensure => directory,
  8.       mode   => 0644,
  9.     }
  10.     file {'/tmp/test3':
  11.       ensure => link,
  12.       target => '/tmp/test1',
  13.     }
  14.     notify {"DONE":}
  15.     notify {"Ca ! c'est fait !":}


Code :
  1. [root@rennspocpuppet manifests]# puppet apply site.pp
  2. Notice: Compiled catalog for rennspocpuppet.rennes.eu.thmulti.com in environment production in 0.09 seconds
  3. Notice: DONE
  4. Notice: /Stage[main]/Main/Notify[DONE]/message: defined 'message' as 'DONE'
  5. Notice: tout est fait
  6. Notice: /Stage[main]/Main/Notify[tout est fait]/message: defined 'message' as 'tout est fait'
  7. Notice: Finished catalog run in 0.04 seconds
  8. [root@rennspocpuppet manifests]# ls -la /tmp/
  9. -rw-r--r--   1 root root    4 Jan 22 11:30 test1
  10. drwxr-xr-x   2 root root 4096 Jan 22 11:30 test2
  11. lrwxrwxrwx   1 root root   10 Jan 22 11:30 test3 -> /tmp/test1


 
Et concernant le client ?
 
En tapant la commande ci-dessous, l’agent va alors appliquer les manifests présent dans le repertoire /etc/puppet/manifest du MASTER:
 

Code :
  1. [root@rennspocpupsrv01 ~]# puppet agent --test
  2. Info: Retrieving plugin
  3. Info: Caching catalog for rennspocpupsrv01.rennes.eu.thmulti.com
  4. Info: Applying configuration version '1390387005'
  5. Notice: /Stage[main]/Main/File[/tmp/test1]/ensure: defined content as '{md5}efd42eb5f26bbbc72e5446a3d0febb0f'
  6. Notice: /Stage[main]/Main/File[/tmp/test3]/ensure: created
  7. Notice: DONE
  8. Notice: /Stage[main]/Main/Notify[DONE]/message: defined 'message' as 'DONE'
  9. Notice: /Stage[main]/Main/File[/tmp/test2]/ensure: created
  10. Notice: tout est fait
  11. Notice: /Stage[main]/Main/Notify[tout est fait]/message: defined 'message' as 'tout est fait'
  12. Notice: Finished catalog run in 0.03 seconds
  13. [root@rennspocpupsrv01 ~]# ls -la /tmp/
  14. total 5116
  15. drwxrwxrwt.  4 root   root        4096 Jan 22 11:36 .
  16. dr-xr-xr-x. 25 root   root        4096 Dec 11 12:10 ..
  17. -rw-r--r--   1 root   root           4 Jan 22 11:36 test1
  18. drwxr-xr-x   2 root   root        4096 Jan 22 11:36 test2
  19. lrwxrwxrwx   1 root   root          10 Jan 22 11:36 test3 -> /tmp/test1


 
 
Analyse de la requête (début) :
 
 

Code :
  1. [root@rennspocpuppet manifests]# tcpdump -i eth0 host rennspocpupsrv01
  2. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  3. listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
  4. 11:41:39.801454 IP rennspocpupsrv01.domain.45470 > rennspocpuppet.domain.8140: Flags [S], seq 1144053067, win 14600, options [mss1460,sackOK,TS val 3634344643 ecr 0,nop,wscale 7], length 0
  5. 11:41:39.801496 IP rennspocpuppet.domain.8140 > rennspocpupsrv01.domain.45470: Flags [S.], seq 2178572627, ack 1144053068, win 14480, options [mss 1460,sackOK,TS val 159575657 ecr 3634344643,nop,wscale 7], length 0


 
 
Problème de droit rencontré quand je veux qu'un fichier soit créé dans /etc de mon client suite à l'application d'un manifest. Dans le repertoire /tmp il n'y a pas de soucis.
 
Arrêt de PUPPET OPEN SOURCE et passage à FABRIC, également OPENSOURCE mais cette fois-ci exploitant le python beaucoup plus democratisé que le ruby.
 
je combine Fabric avec "Cuisine"
 
FABRIC
http://docs.fabfile.org/en/1.8/index.html
 
CUISINE
https://github.com/sebastien/cuisine


Message édité par nomiss le 20-02-2014 à 14:54:23
Reply

Marsh Posté le 21-01-2014 à 16:42:46   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed