Projet

Général

Profil

PUPPET » Historique » Version 8

Mehdi Abaakouk, 04/01/2012 11:08

1 6 Mehdi Abaakouk
h1. Master of Puppet
2 1 Mehdi Abaakouk
3 6 Mehdi Abaakouk
h2. Exemple duplication www avec puppet et les backups:
4 1 Mehdi Abaakouk
5 6 Mehdi Abaakouk
Installation d'une vm (ici: puppet-tester) avec ganeti:
6 6 Mehdi Abaakouk
7 6 Mehdi Abaakouk
sur h1:
8 6 Mehdi Abaakouk
<pre>
9 6 Mehdi Abaakouk
./gnt-addvm puppet-tester
10 6 Mehdi Abaakouk
</pre>
11 6 Mehdi Abaakouk
12 7 Mehdi Abaakouk
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):
13 7 Mehdi Abaakouk
14 7 Mehdi Abaakouk
<pre>
15 7 Mehdi Abaakouk
cat www.tetaneutral.net-var-www.20120102.master.tar.gz | gpg -d | tar -xzf - -C /
16 7 Mehdi Abaakouk
cat www.tetaneutral.net-var-www.20120103.tar.gz | gpg -d | tar -xzf - -C /
17 8 Mehdi Abaakouk
cat www.tetaneutral.net-var-www.20120104.tar.gz | gpg -d | tar -xzf - -C /
18 7 Mehdi Abaakouk
</pre>
19 6 Mehdi Abaakouk
20 6 Mehdi Abaakouk
Puis installation de puppet:
21 6 Mehdi Abaakouk
<pre>
22 6 Mehdi Abaakouk
$ apt-get install puppet
23 6 Mehdi Abaakouk
24 6 Mehdi Abaakouk
$ cat /etc/puppet/puppet.conf ajouter:
25 6 Mehdi Abaakouk
[main]
26 6 Mehdi Abaakouk
logdir=/var/log/puppet
27 6 Mehdi Abaakouk
vardir=/var/lib/puppet
28 6 Mehdi Abaakouk
ssldir=/var/lib/puppet/ssl
29 6 Mehdi Abaakouk
rundir=/var/run/puppet
30 6 Mehdi Abaakouk
factpath=$vardir/lib/facter
31 6 Mehdi Abaakouk
templatedir=$confdir/templates
32 6 Mehdi Abaakouk
pluginsync = true
33 6 Mehdi Abaakouk
34 6 Mehdi Abaakouk
[agent]
35 6 Mehdi Abaakouk
server=puppet.tetaneutral.net
36 6 Mehdi Abaakouk
37 6 Mehdi Abaakouk
$ puppet agent --test
38 6 Mehdi Abaakouk
</pre>
39 6 Mehdi Abaakouk
40 6 Mehdi Abaakouk
Sur puppet.teteneutral.net, dans le fichier nodes.pp copie du bloc de la machine www en puppet-tester
41 6 Mehdi Abaakouk
puis on sign la cle de puppet-tester
42 6 Mehdi Abaakouk
<pre>
43 6 Mehdi Abaakouk
puppetca --sign puppet-tester.tetaneutral.net
44 6 Mehdi Abaakouk
</pre>
45 6 Mehdi Abaakouk
46 6 Mehdi Abaakouk
sur puppet-tester, on descend la configuration via puppet:
47 6 Mehdi Abaakouk
48 6 Mehdi Abaakouk
<pre>puppet agent --test</pre>
49 6 Mehdi Abaakouk
50 6 Mehdi Abaakouk
et pour finir on restaure le backup mysql:
51 6 Mehdi Abaakouk
52 6 Mehdi Abaakouk
<pre>
53 6 Mehdi Abaakouk
mysql -u root < www.tetaneutral.net-all-mysql-databases.20120103.sql
54 6 Mehdi Abaakouk
</pre>
55 6 Mehdi Abaakouk
56 6 Mehdi Abaakouk
57 1 Mehdi Abaakouk
h2. Ajout d'une machine:
58 1 Mehdi Abaakouk
59 1 Mehdi Abaakouk
Sur le client:
60 1 Mehdi Abaakouk
61 1 Mehdi Abaakouk
<pre>
62 1 Mehdi Abaakouk
$ apt-get install puppet
63 1 Mehdi Abaakouk
</pre>
64 1 Mehdi Abaakouk
65 1 Mehdi Abaakouk
dans /etc/default/puppet mettre:
66 1 Mehdi Abaakouk
<pre>
67 1 Mehdi Abaakouk
START=yes
68 1 Mehdi Abaakouk
</pre>
69 1 Mehdi Abaakouk
70 1 Mehdi Abaakouk
et dans /etc/puppet/puppet.conf ajouter:
71 1 Mehdi Abaakouk
<pre>
72 6 Mehdi Abaakouk
pluginsync=true
73 6 Mehdi Abaakouk
74 1 Mehdi Abaakouk
[agent]
75 1 Mehdi Abaakouk
server=puppet.tetaneutral.net
76 1 Mehdi Abaakouk
</pre>
77 1 Mehdi Abaakouk
78 1 Mehdi Abaakouk
Ensuite ajouter la machine dans le puppet master, MOUAHAHA:
79 1 Mehdi Abaakouk
Sur le client: 
80 1 Mehdi Abaakouk
<pre>
81 1 Mehdi Abaakouk
$ puppet agent --test
82 1 Mehdi Abaakouk
warning: peer certificate won't be verified in this SSL session
83 1 Mehdi Abaakouk
warning: peer certificate won't be verified in this SSL session
84 1 Mehdi Abaakouk
warning: peer certificate won't be verified in this SSL session
85 1 Mehdi Abaakouk
Exiting; no certificate found and waitforcert is disabled
86 1 Mehdi Abaakouk
</pre>
87 1 Mehdi Abaakouk
88 1 Mehdi Abaakouk
Sur le serveur:
89 1 Mehdi Abaakouk
<pre>
90 1 Mehdi Abaakouk
$ puppetca --list
91 1 Mehdi Abaakouk
www.tetaneutral.net
92 1 Mehdi Abaakouk
93 1 Mehdi Abaakouk
$ puppetca  --sign --all
94 1 Mehdi Abaakouk
notice: Signed certificate request for www.tetaneutral.net
95 1 Mehdi Abaakouk
notice: Removing file Puppet::SSL::CertificateRequest www.tetaneutral.net at '/var/lib/puppet/ssl/ca/requests/www.tetaneutral.net.pem'
96 1 Mehdi Abaakouk
</pre>
97 1 Mehdi Abaakouk
98 1 Mehdi Abaakouk
Sur le client: 
99 1 Mehdi Abaakouk
<pre>
100 1 Mehdi Abaakouk
$ puppet agent --test
101 1 Mehdi Abaakouk
warning: peer certificate won't be verified in this SSL session
102 1 Mehdi Abaakouk
info: Caching certificate for www.tetaneutral.net
103 1 Mehdi Abaakouk
info: Caching certificate_revocation_list for ca
104 1 Mehdi Abaakouk
info: Caching catalog for www.tetaneutral.net
105 1 Mehdi Abaakouk
info: Applying configuration version '1325516709'
106 4 Mehdi Abaakouk
info: Creating state file /var/lib/puppet/state/state.yaml
107 4 Mehdi Abaakouk
notice: Finished catalog run in 0.01 seconds
108 4 Mehdi Abaakouk
</pre>
109 4 Mehdi Abaakouk
110 4 Mehdi Abaakouk
Sur le serveur, on associe les modules au client:
111 4 Mehdi Abaakouk
112 4 Mehdi Abaakouk
<pre>
113 4 Mehdi Abaakouk
$ cat manifests/nodes.pp
114 4 Mehdi Abaakouk
115 4 Mehdi Abaakouk
node basenode {
116 2 Mehdi Abaakouk
    include backup
117 2 Mehdi Abaakouk
    include motd
118 5 Mehdi Abaakouk
}
119 5 Mehdi Abaakouk
120 5 Mehdi Abaakouk
node 'www.tetaneutral.net' inherits basenode {
121 5 Mehdi Abaakouk
}
122 5 Mehdi Abaakouk
</pre>
123 5 Mehdi Abaakouk
124 5 Mehdi Abaakouk
125 5 Mehdi Abaakouk
126 5 Mehdi Abaakouk
h2. Récupération de fichier écrasé par puppet:
127 5 Mehdi Abaakouk
128 1 Mehdi Abaakouk
Voir la liste des fichiers backupés:
129 2 Mehdi Abaakouk
<pre>
130 2 Mehdi Abaakouk
find /var/*/puppet/clientbucket -name paths | while read path ; do echo $(cat $path): $(basename $(dirname $path))  $(stat -c %y $path) ; done
131 2 Mehdi Abaakouk
</pre>
132 2 Mehdi Abaakouk
Ensuite pour voir le fichier:
133 2 Mehdi Abaakouk
<pre>
134 6 Mehdi Abaakouk
A venir ... (un truc avec puppet filebucket ...)
135 2 Mehdi Abaakouk
</pre>
136 2 Mehdi Abaakouk
137 2 Mehdi Abaakouk
h2. Ajout d'un module (ie: un truc/service/user a configurer), ici module motdpour l'exemple :
138 2 Mehdi Abaakouk
139 2 Mehdi Abaakouk
h3. Création du module
140 2 Mehdi Abaakouk
141 2 Mehdi Abaakouk
<pre>
142 2 Mehdi Abaakouk
cd /etc/puppet/modules
143 2 Mehdi Abaakouk
mkdir -p  motd/{files,lib,manifests,templates,tests}
144 2 Mehdi Abaakouk
$ cat motd/manifests/init.pp
145 2 Mehdi Abaakouk
class motd {
146 2 Mehdi Abaakouk
        file {'motd':
147 2 Mehdi Abaakouk
                ensure  => file,
148 2 Mehdi Abaakouk
                path    => '/etc/motd.tail',
149 2 Mehdi Abaakouk
                mode    => 0644,
150 2 Mehdi Abaakouk
                content => "Bienvenue sur ${::hostname}, machine de l'infrastructure ${::domain}\n\nCette machine est geree par puppet toutes modifications effectuee est suceptible d'etre perdu."
151 2 Mehdi Abaakouk
        }
152 2 Mehdi Abaakouk
}
153 2 Mehdi Abaakouk
</pre>
154 2 Mehdi Abaakouk
155 2 Mehdi Abaakouk
156 2 Mehdi Abaakouk
h3. Ajout du module à la liste des modules disponibles
157 1 Mehdi Abaakouk
158 2 Mehdi Abaakouk
<pre>
159 2 Mehdi Abaakouk
$ cat manifests/modules.pp
160 2 Mehdi Abaakouk
import "motd"
161 2 Mehdi Abaakouk
</pre>
162 2 Mehdi Abaakouk
163 2 Mehdi Abaakouk
h3. Utilisation du module pour une node
164 2 Mehdi Abaakouk
165 2 Mehdi Abaakouk
<pre>
166 2 Mehdi Abaakouk
$ cat manifests/nodes.pp
167 6 Mehdi Abaakouk
node 'www.tetaneutral.net' {
168 2 Mehdi Abaakouk
    include motd
169 2 Mehdi Abaakouk
}
170 2 Mehdi Abaakouk
</pre>
171 1 Mehdi Abaakouk
172 1 Mehdi Abaakouk
173 1 Mehdi Abaakouk
h2. Installation
174 1 Mehdi Abaakouk
175 1 Mehdi Abaakouk
Installation du paquet:
176 1 Mehdi Abaakouk
<pre>
177 1 Mehdi Abaakouk
$ apt-get install puppetmaster
178 1 Mehdi Abaakouk
</pre>
179 1 Mehdi Abaakouk
180 1 Mehdi Abaakouk
181 1 Mehdi Abaakouk
Dans /etc/puppet/puppet.conf mettre le nom du serveur puppetmaster:
182 1 Mehdi Abaakouk
<pre>
183 1 Mehdi Abaakouk
[master]
184 1 Mehdi Abaakouk
certname=puppet.tetaneutral.net
185 1 Mehdi Abaakouk
</pre>
186 1 Mehdi Abaakouk
187 1 Mehdi Abaakouk
Dans /etc/puppet/fileserver.conf configurer les autorisations:
188 1 Mehdi Abaakouk
<pre>
189 1 Mehdi Abaakouk
[files]
190 1 Mehdi Abaakouk
  path /etc/puppet/files
191 1 Mehdi Abaakouk
  allow 91.224.149.0/24
192 1 Mehdi Abaakouk
  allow 91.224.148.0/24
193 1 Mehdi Abaakouk
</pre>
194 6 Mehdi Abaakouk
195 6 Mehdi Abaakouk
196 6 Mehdi Abaakouk
h2. Liens:
197 6 Mehdi Abaakouk
198 6 Mehdi Abaakouk
* http://docs.puppetlabs.com/references/stable/
199 6 Mehdi Abaakouk
* http://madeinsyria.fr/2011/06/howto-puppet-administration-et-industrialisation-de-masse/