Projet

Général

Profil

PUPPET » Historique » Version 8

« Précédent - Version 8/69 (diff) - Suivant » - Version actuelle
Mehdi Abaakouk, 04/01/2012 11:08


Master of Puppet

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

Ajout d'une machine:

Sur le client:

$ apt-get install puppet

dans /etc/default/puppet mettre:

START=yes

et dans /etc/puppet/puppet.conf ajouter:

pluginsync=true

[agent]
server=puppet.tetaneutral.net

Ensuite ajouter la machine dans le puppet master, MOUAHAHA:
Sur le client:

$ 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

Sur le serveur:

$ 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'

Sur le client:

$ 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

Sur le serveur, on associe les modules au client:

$ cat manifests/nodes.pp

node basenode {
    include backup
    include motd
}

node 'www.tetaneutral.net' inherits basenode {
}

Récupération de fichier écrasé par puppet:

Voir la liste des fichiers backupés:

find /var/*/puppet/clientbucket -name paths | while read path ; do echo $(cat $path): $(basename $(dirname $path))  $(stat -c %y $path) ; done

Ensuite pour voir le fichier:
A venir ... (un truc avec puppet filebucket ...)

Ajout d'un module (ie: un truc/service/user a configurer), ici module motdpour l'exemple :

Création du module

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." 
        }
}

Ajout du module à la liste des modules disponibles

$ cat manifests/modules.pp
import "motd" 

Utilisation du module pour une node

$ cat manifests/nodes.pp
node 'www.tetaneutral.net' {
    include motd
}

Installation

Installation du paquet:

$ apt-get install puppetmaster

Dans /etc/puppet/puppet.conf mettre le nom du serveur puppetmaster:

[master]
certname=puppet.tetaneutral.net

Dans /etc/puppet/fileserver.conf configurer les autorisations:

[files]
  path /etc/puppet/files
  allow 91.224.149.0/24
  allow 91.224.148.0/24

Liens: