PUPPET » Historique » Version 13
« Précédent -
Version 13/69
(diff) -
Suivant » -
Version actuelle
Mehdi Abaakouk, 09/08/2012 14:12
Master of Puppet¶
Misc links¶
- http://finninday.net/wiki/index.php/Zero_to_puppet_in_one_day
- http://blog.wikimedia.org/2011/09/19/ever-wondered-how-the-wikimedia-servers-are-configured/
- https://gerrit.wikimedia.org/r/gitweb?p=operations/puppet.git;a=tree
- http://blog.wikimedia.org/2012/04/16/introduction-to-wikimedia-labs/
- http://docs.puppetlabs.com/references/stable/
- http://madeinsyria.fr/2011/06/howto-puppet-administration-et-industrialisation-de-masse/
Exemple duplication www avec puppet et les backups:¶
Installation d'une vm (ici: puppet-tester) avec ganeti:
sur h1:
./gnt-addvm puppet-tester
Sur puppet-tester, restauration du dernier backup de /var/www de www.tetaneutral.net qui se trouve sur h2 (Je passe l'installation de clé pgp):
cat www.tetaneutral.net-var-www.20120102.master.tar.gz | gpg -d | tar -xzf - -C / cat www.tetaneutral.net-var-www.20120103.tar.gz | gpg -d | tar -xzf - -C / cat www.tetaneutral.net-var-www.20120104.tar.gz | gpg -d | tar -xzf - -C /
Puis installation de puppet:
$ apt-get install puppet $ cat /etc/puppet/puppet.conf ajouter: [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter templatedir=$confdir/templates pluginsync = true [agent] server=puppet.tetaneutral.net $ puppet agent --test
Sur puppet.teteneutral.net, dans le fichier nodes.pp copie du bloc de la machine www en puppet-tester
puis on sign la cle de puppet-tester
puppetca --sign puppet-tester.tetaneutral.net
sur puppet-tester, on descend la configuration via puppet:
puppet agent --test
et pour finir on restaure le backup mysql:
mysql -u root < www.tetaneutral.net-all-mysql-databases.20120103.sql <pre> $ apt-get install puppet </pre> dans /etc/default/puppet mettre: <pre> START=yes </pre> et dans /etc/puppet/puppet.conf ajouter: <pre> pluginsync=true [agent] server=puppet.tetaneutral.net </pre> Ensuite ajouter la machine dans le puppet master, MOUAHAHA: Sur le client: <pre> $ puppet agent --test warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session warning: peer certificate won't be verified in this SSL session Exiting; no certificate found and waitforcert is disabled </pre> Sur le serveur: <pre> $ puppetca --list www.tetaneutral.net $ puppetca --sign --all notice: Signed certificate request for www.tetaneutral.net notice: Removing file Puppet::SSL::CertificateRequest www.tetaneutral.net at '/var/lib/puppet/ssl/ca/requests/www.tetaneutral.net.pem' </pre> Sur le client: <pre> $ puppet agent --test warning: peer certificate won't be verified in this SSL session info: Caching certificate for www.tetaneutral.net info: Caching certificate_revocation_list for ca info: Caching catalog for www.tetaneutral.net info: Applying configuration version '1325516709' info: Creating state file /var/lib/puppet/state/state.yaml notice: Finished catalog run in 0.01 seconds </pre> Sur le serveur, on associe les modules au client: <pre> $ cat manifests/nodes.pp node basenode { include backup include motd } node 'www.tetaneutral.net' inherits basenode { } </pre> h2. Récupération de fichier écrasé par puppet: Voir la liste des fichiers backupés: <pre> find /var/*/puppet/clientbucket -name paths | while read path ; do echo $(cat $path): $(basename $(dirname $path)) $(stat -c %y $path) ; done </pre> Ensuite pour voir le fichier: <pre> A venir ... (un truc avec puppet filebucket ...) </pre> h2. Ajout d'un module (ie: un truc/service/user a configurer), ici module motdpour l'exemple : h3. Création du module <pre> cd /etc/puppet/modules mkdir -p motd/{files,lib,manifests,templates,tests} $ cat motd/manifests/init.pp class motd { file {'motd': ensure => file, path => '/etc/motd.tail', mode => 0644, content => "Bienvenue sur ${::hostname}, machine de l'infrastructure ${::domain}\n\nCette machine est geree par puppet toutes modifications effectuee est suceptible d'etre perdu." } } </pre> h3. Ajout du module à la liste des modules disponibles <pre> $ cat manifests/modules.pp import "motd" </pre> h3. Utilisation du module pour une node <pre> $ cat manifests/nodes.pp node 'www.tetaneutral.net' { include motd } </pre> h2. Installation du serveur PuppetMaster (obsolete TODO sileht: réécrire) Installation du paquet: <pre> $ apt-get install puppetmaster </pre> Voici le fichier de configuration /etc/puppet/puppet.conf qui permet de maintenir une conf de dev et de prod: <pre> [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter templatedir=$confdir/templates pluginsync = true [master] certname=puppet.tetaneutral.net manifest = $confdir/manifests/site_$environment.pp </pre> Exemple du fichier site_dev.php <pre> cat /etc/puppet/manifests/site_dev.pp import "classes/*.pp" import "keys.pp" import "modules.pp" import "nodes_dev.pp" </pre> Le fichier keys.pp contient les cle ssh des membres, le répertoire classes les fonctions créé pour ttnn (en autres les clés ssh) Le fichier modules.pp, la liste des modules à chargé. Et enfin nodes_dev.pp la liste des machines puppetisées avec leur configuration. Dans /etc/puppet/fileserver.conf configurer les autorisations: <pre> [files] path /etc/puppet/files allow 91.224.149.0/24 allow 91.224.148.0/24 </pre>Et c'est fini !
Ajout d'une machine (obsolete):¶
Sur le client: