mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HowtoPuppet.md 3.6 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. **Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
  2. # Howto Puppet
  3. ## Mise en place de l'infra
  4. Puppet fonctionne avec un _puppetmaster_, qui centralise la configuration à déployer sur les différents nœuds, sur lesquels tournent des agents Puppet.
  5. ### Puppet master
  6. #### Installation
  7. ~~~
  8. # aptitude install puppetmaster
  9. ~~~
  10. On peut d'ores-et-déjà lancer le démon :
  11. ~~~
  12. # /etc/init.d/puppetmaster start
  13. ~~~
  14. ### Agents Puppet
  15. #### Installation
  16. ~~~
  17. # aptitude install puppet
  18. ~~~
  19. #### Configuration
  20. Activer l'agent Puppet dans `/etc/default/puppet.conf` :
  21. ~~~
  22. START=yes
  23. ~~~
  24. Ajouter l'adresse du puppetmaster dans `/etc/puppet/puppet.conf` :
  25. ~~~{.ini}
  26. [agent]
  27. server=puppetmaster.example.net
  28. ~~~
  29. Puis :
  30. ~~~
  31. # /etc/init.d/puppet start
  32. ~~~
  33. La communication entre l'agent et le maître Puppet se fait en SSL. Lors du premier lancement, l'agent Puppet va alors envoyer automatiquement une demande de certificat (CSR) au maître.
  34. On peut s'assurer de la bonne connexion entre l'agent et le maître :
  35. ~~~
  36. # puppet agent --test
  37. ~~~
  38. À ce stade, la commande doit retourner une erreur SSL disant que le certificat ne peut être vérifié.
  39. Sur le maître, on peut lister les certificats ainsi :
  40. ~~~
  41. # puppet cert --list
  42. ~~~
  43. Et signer le bon certificat :
  44. ~~~
  45. # puppet cert --sign client.example.net
  46. ~~~
  47. ## Utilisation de Puppet
  48. ### Les Manifests
  49. Les fichiers Manifests (extension `.pp`) sont les « programmes » Puppet. Ils permettent de déclarer des ressources.
  50. Le fichier de base est `/etc/puppet/manifests/site.pp`. Généralement, il est bon d'éclater les diverses déclarations dans d'autres fichiers/répertoires, et de ne faire que des inclusion dans ce fichier.
  51. Exemple de fichier `site.pp` :
  52. ~~~
  53. import "nodes"
  54. ~~~
  55. Ici, on indique d'inclure le fichier `/etc/puppet/manifest/nodes.pp`, qui contiendra la déclaration des différents nœuds recevant leur configuration.
  56. Exemple de fichier `nodes.pp` :
  57. ~~~
  58. node myhost.example.net {
  59. # déclaration spécifique à ce nœud
  60. }
  61. node myhost2.example.net {
  62. # déclaration spécifique à ce nœud
  63. }
  64. ~~~
  65. À noter qu'il est important que le fqdn du nœud qui se connecte au master corresponde à `myhost.example.net` (dans l'exemple) (cela peut néanmoins se configurer).
  66. ## Exemple
  67. ### Tester un manifest
  68. Créer le manifest suivant, test.pp
  69. ~~~
  70. file {'testfile':
  71. path => '/tmp/testfile',
  72. ensure => present,
  73. mode => 0640,
  74. content => "I'm a test file.",
  75. }
  76. ~~~
  77. Pour vérifier, on peut l'appliquer directement sur le serveur par exemple, avec la commande suivante :
  78. ~~~
  79. puppet apply test.pp
  80. notice: /Stage[main]//File[testfile]/ensure: created
  81. ~~~
  82. Modifier les droits du fichiers, puis re-faites un `apply` :
  83. ~~~
  84. chmod 777 /tmp/testfile
  85. puppet apply test.pp
  86. notice: /Stage[main]//File[testfile]/mode: mode changed '777' to '640'
  87. ~~~
  88. ### Manifests en Master/Agent (Serveur/Client)
  89. Sur le serveur il faut faire une liste des nœuds (clients) et quels manifests leur affecter.
  90. /etc/puppet/manifests/site.pp
  91. ~~~
  92. class test{
  93. file {'testfile':
  94. path => '/tmp/testfile',
  95. ensure => present,
  96. mode => 0640,
  97. content => "I'm a test file.",
  98. }
  99. }
  100. node client {
  101. include test
  102. }
  103. ~~~
  104. ### Distribution des fichiers via puppet
  105. ~~~
  106. #/etc/puppet/fileserver.conf
  107. [files]
  108. path /etc/puppet/files
  109. allow 192.168.0.0/16
  110. ~~~
  111. ~~~
  112. class test{
  113. file {'testfile':
  114. path => '/tmp/testfile',
  115. ensure => present,
  116. mode => 0640,
  117. source => "puppet://master.mondomaine.com/files/apps/sudo/sudoers"
  118. }
  119. }
  120. ~~~