Le Topic Unique des marionnetistes@OSA (Puppet, Salt, Chef, ...)

Le Topic Unique des marionnetistes@OSA (Puppet, Salt, Chef, ...) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 14-01-2009 à 18:03:53    

A la demande unanime de moi-même, et suite au refus par monsieur Black_Lord de le faire, je crée ce topic qui servira à poser vos questions sur Puppet (à Black_Lord :D), mais aussi vos éventuels recettes, idées...
 
MAJ 29/10/2014 : Ouverture du topic aux autres solutions d'automatisation / gestion de configuration : Salt, Chef, etc. :o
 

Citation :


Ce que permet donc Puppet :
 
- Puppet permet donc de définir les configuration des logiciels utilisés pour tout un ensemble de machines, et permet donc **d’imposer les bonnes pratiques** (en terme de configuration et d’état des services) dans toute l’entreprise.
- Puppetd vérifie périodiquement (par défaut toutes les demi-heures) que la configuration du serveur correspond bien à ce que le puppetmaster attend. Plus besoin donc de procédure de contrôles réguliers.


 
 
J'essaierai de maintenir un premier post clean avec :
 
Quelques liens :


Message édité par e_esprit le 30-10-2014 à 10:56:40

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-01-2009 à 18:03:53   

Reply

Marsh Posté le 14-01-2009 à 18:04:01    


<======== ICI des liens vers les recettes maison =========>


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-01-2009 à 18:04:11    

Donc, je commence :
- première question :
  Les clients puppet se connectent par défaut toutes les 30 minutes (configurable) au serveur afin de voir si leur config a changé, et si c'est le cas appliquer les modifs.
  Il est possible de forcer la MAJ en envoyant le signal USR1 au process puppetd.
  Est-il possible de forcer la MAJ de tous les clients depuis le serveur ??? j'ai pas trouvé de doc à ce sujet :(

 

- une idée :
  Je souhaite centraliser la gestion des clefs SSH autorisées à se connecter sur tel ou tel serveur. J'ai bien vu une recette disponible sur le site de puppet, mais elle ne réponds pas à mon attente, et puis c'est l'occasion de se lancer dans un travail un peu réfléchi avec Puppet...
  Ce que je souhaite donc :
  - stockage des clefs des différents intervenants sur le serveur dans des fichiers distincts (.../keys/esprit, .../keys/toto, ...)
  - pour chaque noeud puppet, dire quels sont les utilisateurs qui ont accès au root (ou autre) => générer le fichier authorized_keys qui va bien
  - gestion de la révocation des clefs (MAJ ou suppression).

 

 Tout d'abord, je souhaite donc simplement créer le fichier par concaténation des diverses clefs autorisées, et c'est la que ça coince. On peut :
  + copier simplement un fichier sur un noeud (mais ca ne correspond pas au besoin),
  + on peut créer une chaine de caractère qui sera le contenu du fichier => ca semble être ça.
  Maintenant... comment lire le contenu de mes différents fichiers afin de les affecter dans une chaine ? j'ai pas trouvé :(

 

EDIT : Peut-être avec ça : http://reductivelabs.com/trac/pupp [...] rence#file [:gratgrat]
          Franchement la doc est conséquente, mais pas super bien faite :o

 

Si quelqu'un a une solution, un pointeur, une idée... he's welcome [:dawa]

Message cité 2 fois
Message édité par e_esprit le 14-01-2009 à 18:17:35

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-01-2009 à 18:17:35    

ça serait bien de résumer une définition pour les noobs comme moi ;)  

Citation :


Ce que permet donc Puppet :
 
- Puppet permet donc de définir les configuration des logiciels utilisés pour tout un ensemble de machines, et permet donc **d’imposer les bonnes pratiques** (en terme de configuration et d’état des services) dans toute l’entreprise.
- Puppetd vérifie périodiquement (par défaut toutes les demi-heures) que la configuration du serveur correspond bien à ce que le puppetmaster attend. Plus besoin donc de procédure de contrôles réguliers.


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 14-01-2009 à 18:22:20    

C'est un topic élitiste [:burkhalter]  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Je prends quand même ton introduction [:julm3]  
 
 
 
 
 
 
 
 
 
 
 
 
 :jap:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-01-2009 à 18:30:32    

e_esprit a écrit :

Donc, je commence :
- première question :  
  Les clients puppet se connectent par défaut toutes les 30 minutes (configurable) au serveur afin de voir si leur config a changé, et si c'est le cas appliquer les modifs.
  Il est possible de forcer la MAJ en envoyant le signal USR1 au process puppetd.
  Est-il possible de forcer la MAJ de tous les clients depuis le serveur ??? j'ai pas trouvé de doc à ce sujet :(
 
- une idée :
  Je souhaite centraliser la gestion des clefs SSH autorisées à se connecter sur tel ou tel serveur. J'ai bien vu une recette disponible sur le site de puppet, mais elle ne réponds pas à mon attente, et puis c'est l'occasion de se lancer dans un travail un peu réfléchi avec Puppet...
  Ce que je souhaite donc :
  - stockage des clefs des différents intervenants sur le serveur dans des fichiers distincts (.../keys/esprit, .../keys/toto, ...)
  - pour chaque noeud puppet, dire quels sont les utilisateurs qui ont accès au root (ou autre) => générer le fichier authorized_keys qui va bien
  - gestion de la révocation des clefs (MAJ ou suppression).
 
  Tout d'abord, je souhaite donc simplement créer le fichier par concaténation des diverses clefs autorisées, et c'est la que ça coince. On peut :
  + copier simplement un fichier sur un noeud (mais ca ne correspond pas au besoin),  
  + on peut créer une chaine de caractère qui sera le contenu du fichier => ca semble être ça.
  Maintenant... comment lire le contenu de mes différents fichiers afin de les affecter dans une chaine ? j'ai pas trouvé :(
 
EDIT : Peut-être avec ça : http://reductivelabs.com/trac/pupp [...] rence#file [:gratgrat]
          Franchement la doc est conséquente, mais pas super bien faite :o
 
Si quelqu'un a une solution, un pointeur, une idée... he's welcome [:dawa]


 

  • pour faire la maj directement ? puppetd -vt et roulaize :o
  • man puppetrun (je n'utilise pas)
  • pour les users je fais un truc mais ça ne me satisfait pas pleinement, donc je ne vais rien dire :D
  • pour les clés de différents users je n'y ai jamais réfléchi, perso le root est interdit en SSH, je gère des sudoers :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 14-01-2009 à 18:33:37    

Mais tu ne sers à rien alors [:-lilith-]
 
Merci pour le puppetrun en tout cas, je n'avais pas bien saisi son interêt, avec leur exemple à la con sur LDAP :o :D
:jap:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 14-01-2009 à 18:35:34    

incontournable : http://git.black.co.at/
sinon perso c'est : http://delicious.com/__nico/puppet :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 14-01-2009 à 18:36:41    

j'en ai encore dans mon historique@work, faudra que je les bookmark :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 14-01-2009 à 20:30:52    

Moi j'ai projet de m'en servir en particulier pour déployer des conf.
 
vu qu'on a un parc avec moitier/moitier de RedHat et de Sles il me fallait un outils qui soit capable de gerer le multi-plateforme et de gérer des serveurs par fonction.
 
Je pense que Pupette correspond bien à mes attentes.
Quand je lance le projet (d'ici 1 ou 2 mois le temps que j'ai écoulé ceux en cours) et je vous tiendrais au courant de l'évolution :D


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 14-01-2009 à 20:30:52   

Reply

Marsh Posté le 15-01-2009 à 14:43:25    

Bon, si y en a que ca interesse aussi la gestion des authorized_keys, en fait y a deja un type natif ssh_authorized_key :
http://reductivelabs.com/trac/pupp [...] orized-key
 
Et on ne rigole pas là-bas au fond ! [:-lilith-]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 16-01-2009 à 00:50:45    

e_esprit a écrit :

Bon, si y en a que ca interesse aussi la gestion des authorized_keys, en fait y a deja un type natif ssh_authorized_key :
http://reductivelabs.com/trac/pupp [...] orized-key
 
Et on ne rigole pas là-bas au fond ! [:-lilith-]


personnellement il ne me satisfait pas  [:cosmoschtroumpf]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 16-01-2009 à 09:46:26    

Moi si, pile-poil ce que je veux en faire [:cerveau dr]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 16-01-2009 à 09:54:03    

Rha, le puppetrun de debian testing est moisi [:prozac]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 17-01-2009 à 11:49:41    

b_l => http://linuxfr.org/2009/01/14/24881.html (premier commentaire) :D
Allez, au boulot [:cerveau dr]

Message cité 2 fois
Message édité par e_esprit le 17-01-2009 à 11:49:52

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 17-01-2009 à 12:19:03    

e_esprit a écrit :

b_l => http://linuxfr.org/2009/01/14/24881.html (premier commentaire) :D
Allez, au boulot [:cerveau dr]


[:parisbreizh]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 17-01-2009 à 16:49:57    

e_esprit a écrit :

b_l => http://linuxfr.org/2009/01/14/24881.html (premier commentaire) :D
Allez, au boulot [:cerveau dr]


[:tinostar]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 18-01-2009 à 11:15:18    

Et si je dis cfengine ?

Reply

Marsh Posté le 18-01-2009 à 11:55:00    

http://reductivelabs.com/trac/pupp [...] neVsPuppet :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-02-2009 à 11:00:47    

e_esprit a écrit :


  - pour chaque noeud puppet, dire quels sont les utilisateurs qui ont accès au root (ou autre) => générer le fichier authorized_keys qui va bien

 

Petit tips qui permet de faire de la selection de fichier selon l'hote. Si à la base on a comme source un fichier "commun" (genre le authorized_keys d'un user) mais que sur un hote particulier on veut un fichier différent alors on peut utiliser le truc suivant :

 


file { "/home/$title/.ssh/authorized_keys":
                owner => $title,
                group => "staff",
                mode => 600,
                ensure => present,
                source => [ "puppet://$fileserver/files/users/$title/authorized_keys.$fqdn", "puppet://$fileserver/files/users/$title/authorized_keys" ]
}

 

du coup dans files/users/<monuser>/ il y a un authorized_keys déployé "partout" sauf si il existe  files/users/<monuser>/authorized_keys.<lefqdndelamachine> qui sera alors utilisé "prioritairement".

 

my 2c


Message édité par black_lord le 06-02-2009 à 11:01:14

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-02-2009 à 13:48:59    

ouais, mais comme j'ai pas envie de gérer un fichier par serveur, et que j'ai pas une config générique pour la plupart des machines, j'utilise le type de base ssh_auhtorized_key qui marche très bien :D
 
Sinon les templates c'est bieng :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-02-2009 à 13:57:57    

e_esprit a écrit :

ouais, mais comme j'ai pas envie de gérer un fichier par serveur, et que j'ai pas une config générique pour la plupart des machines, j'utilise le type de base ssh_auhtorized_key qui marche très bien :D

 

Sinon les templates c'est bieng :D

 

oui, mais là c'est pas adapté :D

 

le post avait plus vocation à être générique, tu peux aussi faire ça pour un resolv.conf ou autre :o


Message édité par black_lord le 06-02-2009 à 13:58:31

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-02-2009 à 14:00:13    

Oui, oui j'avais compris que c'etait générique, merci :jap:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 02-03-2009 à 10:26:17    

ce qui serait bien en fait c'est de pouvoir concaténer un fichier générique avec un spécifique :o
 
Sinon saloperie de proxy novell, pour accéder aux dépôts GIT c'est la mort !


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 02-03-2009 à 11:24:54    

Hrolf a écrit :

ce qui serait bien en fait c'est de pouvoir concaténer un fichier générique avec un spécifique :o


 
du genre ? parce qu'il y a les templates qui font des trucs sympas


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-03-2009 à 12:00:08    

Du genre j'en suis encore à l'install donc je te dirais quand j'en serais là :D


---------------
Il y a trois sortes de mensonges : les mensonges, les gros mensonges et les statistiques !
Reply

Marsh Posté le 06-03-2009 à 14:21:52    

Tain je lutte pour définir une bete fonction avec paramètres qui va générer une conf à partir d'un template...

 

Si quelqu'un a une idée :

 
Code :
  1. node 'tratralala.pouet.pouet' {
  2.     include basic::ntp
  3.     include sshd::esprit
  4.     $vlans = ["vlan3", "vlan4"]
  5.     $macid = "a"
  6.     include xen-hypervisor::hypervisor
  7.     include xen-hypervisor::mpath-double
  8.     xen-hypervisor::network_scripts { net: vlans => $vlans, macid => $macid }
  9.     include puppetd::puppet-client
  10. }
 
Code :
  1. define xen-hypervisor::network_scripts($vlans, $macid)
  2. {
  3.     file { "/tmp/network-multi-vlan":
  4.         owner   => root,
  5.         group   => root,
  6.         mode    => 755,
  7.         content => template("xen-hypervisor/network-multi-vlan.tpl" ),
  8.     }
  9.     file { "/tmp/network-bridge-vlan":
  10.         owner   => root,
  11.         group   => root,
  12.         mode    => 755,
  13.         content => template("xen-hypervisor/network-bridge-vlan.tpl" ),
  14.     }
  15. }
 

Et le template ressemble à :

Code :
  1. #!/bin/sh
  2. #============================================================================
  3. # Xen vlan bridge start/stop script.
  4. # Xend calls a network script when it starts.
  5. # The script name to use is defined in /etc/xen/xend-config.sxp
  6. # in the network-script field.
  7. #
  8. # This script creates multiple bridges to segregate individual domUs to
  9. # separate VLANs. Customize to fit your needs.
  10. #
  11. # Usage:
  12. #
  13. # network-multi-vlan (start|stop|status)
  14. #
  15. #============================================================================
  16. dir=$(dirname "$0" )
  17. ##
  18. # To make the tagged interface available to some DomUs, create the default
  19. # bridge. Comment this out to only make vlan-based bridges available.
  20. #"$dir/network-bridge" "$@" vifnum=0
  21. ##
  22. # Once all normal bridges are active, create any vlan-based briges.
  23. <% @vlans.each do |vlan| %>
  24.     <% case @vlan
  25.        when "vlan3" %>
  26. # DMZ-Divers
  27. "$dir/network-bridge-vlan" "$@" vlan=3 netid=3
  28.     <% when "vlan4" %>
  29. # Serveurs CRI
  30. "$dir/network-bridge-vlan" "$@" vlan=4 netid=4
  31.     <% when "vlan6" %>
  32. [...]
  33.     <% end %>
  34. <% end %>
 

Et coté client puppet :

puppetd[31291]: Could not retrieve catalog: Failed to parse template xen-hypervisor/network-multi-vlan.tpl: undefined method `each' for nil:NilClass at /etc/puppet/modules/xen-hypervisor/manifests/init.pp:28 on node tratralala.pouet.pouet

 

Je lutte pour passer les paramètres, vous avez pas une bonne doc _claire_ sur les fonctions ? :cry:


Message édité par e_esprit le 06-03-2009 à 14:23:07

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-03-2009 à 14:42:52    

la doc sur ERB : http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/ qui est le langage utilisé dans les templates :)

 


search <%= domainname %>
<% ns.each do |n| %>nameserver <%= n %>
<% end %>

 

pour mon template avec les variables domainname & ns (qui est un array) définies plus tôt dans un manifest

 

EDIT : "erb -x -T '-' network-multi-vlan.tpl | ruby -c" donne quoi ?


Message édité par black_lord le 06-03-2009 à 14:48:00

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-03-2009 à 14:50:57    

C'est mes @ dans le template qui foutaient le boxon, je viens de trouver :jap:
 


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-03-2009 à 14:52:14    

Bon c'est cool, maintenant mes hyperviseurs xen vont se configuré quasiment tout seul [:volta]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-03-2009 à 14:53:06    

puppet ça déboite :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-03-2009 à 14:57:09    

Clair, c'est un peu chiant à prendre en main au début, mais au final le temps gagné au déploiement c'est : \o/
 
Faut que je gère la liste des VM à mettre en auto maintenant [:huit]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-03-2009 à 15:00:53    

ça c'est facile :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-03-2009 à 15:01:43    

e_esprit a écrit :

Clair, c'est un peu chiant à prendre en main au début, mais au final le temps gagné au déploiement c'est : \o/
 
Faut que je gère la liste des VM à mettre en auto maintenant [:huit]


tu m'étonnes, avec en plus un petit hook puppet ajouté dans mes xen-tools, le xen-create-image fait tout d'un seul coup [:huit]
 
bref [:ripthejacker]


Message édité par black_lord le 06-03-2009 à 15:03:24

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 06-03-2009 à 15:02:34    

Bah on est Vendredi, je vais pas me lancer dans le gros oeuvre :D


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 06-03-2009 à 15:30:47    

Bon ben voila, plus qu'à mouler maintenant [:dawa]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-04-2010 à 11:53:40    

Up d'outre-tombe :o
 
Y a un moyen avec le type file de faire une concaténation de plusieurs fichiers sources ?
On peut spécifier une liste de fichiers sources, mais dans ce cas là, il prend le premier qui existe comme source :/


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-04-2010 à 12:00:08    

Tu peux utiliser des templates (qui s'aggrègent quand on leur passe un array), un define (cf en dessous) ou une fonction personnalisée (assez simple à écrire je pense, j'en ai retouché une pour avoir un comportement similaire à "source" en utilisant des templates
 
le define : http://git.black.co.at/?p=module-c [...] evelopment


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 21-04-2010 à 12:16:37    

:jap:  
 
Mais je suis pas sûr de bien comprendre cette partie :

Code :
  1. # The $dir is purged by puppet and will only contain explicitely configured
  2. # files. This can be overridden by defining the directory before the
  3. # concatenated_file.


 :??:


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 21-04-2010 à 12:29:19    

e_esprit a écrit :

:jap:  
 
Mais je suis pas sûr de bien comprendre cette partie :

Code :
  1. # The $dir is purged by puppet and will only contain explicitely configured
  2. # files. This can be overridden by defining the directory before the
  3. # concatenated_file.


 :??:


 
C'est cette partie :
 


 if defined(File[$dir_real]) {
  debug("${dir_real} already defined" )
 } else {
  file {
   $dir_real:
    source => "puppet:///modules/common/empty",
    checksum => mtime,
    ignore => '.ignore',
    recurse => true, purge => true, force => true,
    mode => $mode, owner => $owner, group => $group,
    notify => Exec["concat_${name}"];
  }
 }


 
par contre j'ai un doute sur l'utilisation [:cerveau klem] je demanderai à l'auteur :D


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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