PUPPET » Historique » Version 69
Skuld Skuld, 20/07/2017 20:16
1 | 67 | Mehdi Abaakouk | {{>toc}} |
---|---|---|---|
2 | 67 | Mehdi Abaakouk | |
3 | 6 | Mehdi Abaakouk | h1. Master of Puppet |
4 | 1 | Mehdi Abaakouk | |
5 | 10 | Laurent GUERBY | h2. Misc links |
6 | 10 | Laurent GUERBY | |
7 | 22 | Laurent GUERBY | * http://ldn-fai.net/introduction-puppet/ |
8 | 17 | Laurent GUERBY | * http://blog.octo.com/passer-du-shell-a-puppet/ |
9 | 16 | Laurent GUERBY | * http://devopsanywhere.blogspot.fr/2011/10/puppet-vs-chef-fight.html |
10 | 16 | Laurent GUERBY | * http://blog.loof.fr/2011/10/puppet-vs-chef-fight.html |
11 | 10 | Laurent GUERBY | * http://finninday.net/wiki/index.php/Zero_to_puppet_in_one_day |
12 | 11 | Laurent GUERBY | * http://blog.wikimedia.org/2011/09/19/ever-wondered-how-the-wikimedia-servers-are-configured/ |
13 | 12 | Laurent GUERBY | * https://gerrit.wikimedia.org/r/gitweb?p=operations/puppet.git;a=tree |
14 | 11 | Laurent GUERBY | * http://blog.wikimedia.org/2012/04/16/introduction-to-wikimedia-labs/ |
15 | 13 | Mehdi Abaakouk | * http://docs.puppetlabs.com/references/stable/ |
16 | 13 | Mehdi Abaakouk | * http://madeinsyria.fr/2011/06/howto-puppet-administration-et-industrialisation-de-masse/ |
17 | 19 | Laurent GUERBY | * http://puppetconf.com/blog/watch-and-learn-puppetconf-2012-videos/ |
18 | 19 | Laurent GUERBY | ** Keynote: CERN - Accelerating Science with Puppet - Tim Bell http://www.youtube.com/watch?v=-Ykb2j2ojYU |
19 | 20 | Laurent GUERBY | ** Configuration Management @CERN - Ben Jones http://www.youtube.com/watch?v=ehVMxbJdld8 |
20 | 19 | Laurent GUERBY | ** The Setup: Managing an Army of Developer Laptops with Puppet - Will Farrington of GitHub http://www.youtube.com/watch?v=YlKXRdSAZhY |
21 | 10 | Laurent GUERBY | |
22 | 66 | Mehdi Abaakouk | h2. Organisation manifest tetaneutral.net |
23 | 64 | Mehdi Abaakouk | |
24 | 65 | Mehdi Abaakouk | <pre> |
25 | 65 | Mehdi Abaakouk | root@puppet:/etc/puppet/manifests# tree |
26 | 65 | Mehdi Abaakouk | . |
27 | 65 | Mehdi Abaakouk | ├── authorized_key_generator.py # script qui génére le contenu de manifests/files/ssh_keys et manifests/classes/sshkeys_groups.pp |
28 | 65 | Mehdi Abaakouk | ├── classes # bout de configuration commune à plusieurs machines |
29 | 65 | Mehdi Abaakouk | │ ├── sshkeys_groups.pp # NE PAS EDITER: listes des groups de clés ssh |
30 | 65 | Mehdi Abaakouk | │ ├── sshkeys.pp # NE PAS EDITER: listes des groups de clés ssh |
31 | 65 | Mehdi Abaakouk | │ ├── ttnn_apache_mod_pagespeed.pp # config du module apache pagespeed |
32 | 65 | Mehdi Abaakouk | │ ├── ttnn_apache_mod_php.pp # config de php avec apache+wsgi+phpfpm |
33 | 65 | Mehdi Abaakouk | │ ├── ttnn_cache_ns.pp # config de nos caches DNS |
34 | 65 | Mehdi Abaakouk | │ ├── ttnn_mail_master.pp # config de notre mx principal smtp+imap |
35 | 65 | Mehdi Abaakouk | │ ├── ttnn_mail_relay.pp # config de nos mx secondaires smpt seulement |
36 | 65 | Mehdi Abaakouk | │ ├── ttnn_primary_ns.pp # config de notre DNS principal |
37 | 65 | Mehdi Abaakouk | │ ├── ttnn_secondary_ns.pp # config de nos DNS secondaires |
38 | 65 | Mehdi Abaakouk | │ └── ttnnssl.pp # class qui install des certificats ssl de tetaneutral |
39 | 65 | Mehdi Abaakouk | │ |
40 | 65 | Mehdi Abaakouk | ├── common.pp # config commun à toutes les machines |
41 | 65 | Mehdi Abaakouk | │ |
42 | 65 | Mehdi Abaakouk | ├── files # fichiers/templates qui sont copier sur les machines |
43 | 65 | Mehdi Abaakouk | │ ├── bashrc |
44 | 65 | Mehdi Abaakouk | │ ├── h2.tetaneutral.net |
45 | 65 | Mehdi Abaakouk | │ │ ├── ipv6-ra-log.sh |
46 | 65 | Mehdi Abaakouk | │ │ └── ramond.conf |
47 | 65 | Mehdi Abaakouk | │ ├── h7.tetaneutral.net |
48 | 65 | Mehdi Abaakouk | │ │ └── dnsmasq-ttnnstgo.conf |
49 | 65 | Mehdi Abaakouk | │ ├── mx1.tetaneutral.net # Ici, sont nos boites aux lettres, aliases, régles d'exception pour bypass l'antispam. |
50 | 65 | Mehdi Abaakouk | │ │ ├── aliases |
51 | 65 | Mehdi Abaakouk | |
52 | 65 | Mehdi Abaakouk | │ │ ├── recipient_access |
53 | 65 | Mehdi Abaakouk | │ │ └── sender_access |
54 | 65 | Mehdi Abaakouk | │ ├── pupper-tester.tetaneutral.net |
55 | 65 | Mehdi Abaakouk | │ │ ├── aliases |
56 | 65 | Mehdi Abaakouk | |
57 | 65 | Mehdi Abaakouk | │ │ ├── recipient_access |
58 | 65 | Mehdi Abaakouk | │ │ └── sender_access |
59 | 65 | Mehdi Abaakouk | │ ├── puppet-auth.conf.erb |
60 | 65 | Mehdi Abaakouk | │ ├── puppet.conf.erb |
61 | 65 | Mehdi Abaakouk | │ └── ssh_keys # NE PAS EDITER: c'est clé sont extraite de redmine par le script "authorized_key_generator.py" |
62 | 65 | Mehdi Abaakouk | │ ├── ssh-routeur |
63 | 65 | Mehdi Abaakouk | │ │ ├── redmine_fab.pub |
64 | 65 | Mehdi Abaakouk | │ │ ├── redmine_guerby.pub |
65 | 65 | Mehdi Abaakouk | │ │ ├── redmine_matthieu.pub |
66 | 65 | Mehdi Abaakouk | │ │ └── redmine_sileht.pub |
67 | 65 | Mehdi Abaakouk | │ └── ssh-serveur |
68 | 65 | Mehdi Abaakouk | │ ├── redmine_guerby.pub |
69 | 65 | Mehdi Abaakouk | │ └── redmine_sileht.pub |
70 | 65 | Mehdi Abaakouk | │ |
71 | 65 | Mehdi Abaakouk | ├── nodes # Les configurations de chaques machines |
72 | 65 | Mehdi Abaakouk | │ ├── chiliproject.tetaneutral.net.pp |
73 | 65 | Mehdi Abaakouk | │ ├── dns1.tetaneutral.net.pp |
74 | 65 | Mehdi Abaakouk | │ ├── gandi1.tetaneutral.net.pp |
75 | 65 | Mehdi Abaakouk | │ ├── ganeti.tetaneutral.net.pp # contient h1 h4 h5 h6 |
76 | 65 | Mehdi Abaakouk | │ ├── gw.tetaneutral.net.pp |
77 | 65 | Mehdi Abaakouk | │ ├── h2.tetaneutral.net.pp |
78 | 65 | Mehdi Abaakouk | │ ├── h3.tetaneutral.net.pp |
79 | 65 | Mehdi Abaakouk | │ ├── h7.tetaneutral.net.pp |
80 | 65 | Mehdi Abaakouk | │ ├── lists.tetaneutral.net.pp |
81 | 65 | Mehdi Abaakouk | │ ├── mx1.tetaneutral.net.pp |
82 | 65 | Mehdi Abaakouk | │ ├── n7.tetaneutral.net.pp |
83 | 65 | Mehdi Abaakouk | │ ├── nagios.tetaneutral.net.pp |
84 | 65 | Mehdi Abaakouk | │ ├── openvpn.tetaneutral.net.pp |
85 | 65 | Mehdi Abaakouk | │ ├── pano.tetaneutral.net.pp |
86 | 65 | Mehdi Abaakouk | │ ├── puppet-test.pp |
87 | 65 | Mehdi Abaakouk | │ ├── puppet.tetaneutral.net.pp |
88 | 65 | Mehdi Abaakouk | │ ├── ssd1.tetaneutral.net.pp |
89 | 65 | Mehdi Abaakouk | │ ├── tetaneutral.grenode.net.pp |
90 | 65 | Mehdi Abaakouk | │ ├── ttnn.vps.arn-fai.net.pp |
91 | 65 | Mehdi Abaakouk | │ └── www.tetaneutral.net.pp |
92 | 65 | Mehdi Abaakouk | │ |
93 | 65 | Mehdi Abaakouk | ├── password.pp # mot de passe et cert ssl de ttnn (n'est pas versionné dans git) |
94 | 65 | Mehdi Abaakouk | └── site.pp # fichier bootstrap de puppet |
95 | 65 | Mehdi Abaakouk | </pre> |
96 | 64 | Mehdi Abaakouk | |
97 | 68 | Mehdi Abaakouk | |
98 | 14 | Mehdi Abaakouk | h2. Installation d'un server de mail (roundcube+dovecot+spamassasin+spf+postgrey+postfix en virtual domain) comme celui de ttnn avec puppet |
99 | 1 | Mehdi Abaakouk | |
100 | 64 | Mehdi Abaakouk | Sur votre puppet-master (qui peux être votre machine ou le server lui-meme) |
101 | 14 | Mehdi Abaakouk | |
102 | 14 | Mehdi Abaakouk | <pre> |
103 | 14 | Mehdi Abaakouk | apt-get install puppet puppetmaster |
104 | 14 | Mehdi Abaakouk | cd /etc/puppet/modules/ |
105 | 14 | Mehdi Abaakouk | git clone http://git.tetaneutral.net/puppet-mailserver.git mailserver |
106 | 14 | Mehdi Abaakouk | |
107 | 14 | Mehdi Abaakouk | mkdir /etc/puppet/{templates,ssl} |
108 | 14 | Mehdi Abaakouk | touch /etc/puppet/templates/<hostname>-{mail,aliases,sender_access,recipient_access} |
109 | 14 | Mehdi Abaakouk | </pre> |
110 | 1 | Mehdi Abaakouk | |
111 | 14 | Mehdi Abaakouk | |
112 | 64 | Mehdi Abaakouk | Créé le fichier /etc/puppet/manifest/site.pp |
113 | 14 | Mehdi Abaakouk | <pre> |
114 | 14 | Mehdi Abaakouk | node "<HOSTNAME>" { |
115 | 14 | Mehdi Abaakouk | class {'ttnn_mail_master': domains => [ "mydomain.tld", "myotherdomains.tld" ], } |
116 | 14 | Mehdi Abaakouk | } |
117 | 15 | Mehdi Abaakouk | |
118 | 15 | Mehdi Abaakouk | node "<HOSTNAME_RELAY>" { |
119 | 15 | Mehdi Abaakouk | class {'ttnn_mail_relay': domains => [ "mydomain.tld", "myotherdomains.tld" ], } |
120 | 15 | Mehdi Abaakouk | } |
121 | 15 | Mehdi Abaakouk | |
122 | 14 | Mehdi Abaakouk | class ttnn_mail_master ($domains = []) { |
123 | 14 | Mehdi Abaakouk | |
124 | 14 | Mehdi Abaakouk | class { 'mysql::server': |
125 | 14 | Mehdi Abaakouk | config_hash => { |
126 | 14 | Mehdi Abaakouk | root_password => "dummy_password"], |
127 | 14 | Mehdi Abaakouk | }, |
128 | 14 | Mehdi Abaakouk | } |
129 | 14 | Mehdi Abaakouk | |
130 | 14 | Mehdi Abaakouk | class { 'apache':} |
131 | 14 | Mehdi Abaakouk | class { 'mailserver::params': |
132 | 14 | Mehdi Abaakouk | domains => $domains, |
133 | 14 | Mehdi Abaakouk | passwd_content => template("$fqdn-mail"), |
134 | 14 | Mehdi Abaakouk | aliases_content => template("$fqdn-aliases"), |
135 | 14 | Mehdi Abaakouk | sender_access_content => template("$fqdn-sender_access"), |
136 | 14 | Mehdi Abaakouk | recipient_access_content => template("$fqdn-recipient_access"), |
137 | 14 | Mehdi Abaakouk | ssl_cert_source => "puppet:///ssl/$fqdn.pem", |
138 | 14 | Mehdi Abaakouk | ssl_key_source => "puppet:///ssl/$fqdn.key", |
139 | 14 | Mehdi Abaakouk | } |
140 | 14 | Mehdi Abaakouk | class { 'mailserver::spamassassin': } |
141 | 14 | Mehdi Abaakouk | class { 'mailserver::rbl': } |
142 | 14 | Mehdi Abaakouk | class { 'mailserver::greylisting': } |
143 | 14 | Mehdi Abaakouk | class { 'mailserver::dovecot':} |
144 | 14 | Mehdi Abaakouk | # class { 'mailserver::spf': } |
145 | 14 | Mehdi Abaakouk | class { 'mailserver::roundcube': session_key => '<A_RANDOM_STRING>' } |
146 | 14 | Mehdi Abaakouk | class { 'mailserver::postfix': } |
147 | 14 | Mehdi Abaakouk | |
148 | 14 | Mehdi Abaakouk | |
149 | 14 | Mehdi Abaakouk | } |
150 | 15 | Mehdi Abaakouk | |
151 | 15 | Mehdi Abaakouk | class ttnn_mail_relay( |
152 | 15 | Mehdi Abaakouk | $domains = [], |
153 | 15 | Mehdi Abaakouk | ){ |
154 | 15 | Mehdi Abaakouk | class { 'mailserver::params': |
155 | 15 | Mehdi Abaakouk | domains => $domains, |
156 | 15 | Mehdi Abaakouk | } |
157 | 15 | Mehdi Abaakouk | class { 'mailserver::spamassassin': } |
158 | 15 | Mehdi Abaakouk | class { 'mailserver::rbl': } |
159 | 15 | Mehdi Abaakouk | class { 'mailserver::greylisting': } |
160 | 15 | Mehdi Abaakouk | #class { 'mailserver::spf': } |
161 | 15 | Mehdi Abaakouk | class { 'mailserver::relay': } |
162 | 15 | Mehdi Abaakouk | class { 'mailserver::postfix': } |
163 | 15 | Mehdi Abaakouk | } |
164 | 15 | Mehdi Abaakouk | |
165 | 15 | Mehdi Abaakouk | |
166 | 14 | Mehdi Abaakouk | </pre> |
167 | 14 | Mehdi Abaakouk | |
168 | 14 | Mehdi Abaakouk | Editer le fichier /etc/puppet/templates/<HOSTNAME>-mail et ajouter des comptes mails: |
169 | 14 | Mehdi Abaakouk | <pre> |
170 | 14 | Mehdi Abaakouk | toto@mydomain.tld:{PLAIN}clear_password |
171 | 1 | Mehdi Abaakouk | toto@myotherdomain.tld:{SHA1}crypted_password |
172 | 14 | Mehdi Abaakouk | </pre> |
173 | 14 | Mehdi Abaakouk | |
174 | 64 | Mehdi Abaakouk | Ajouter les certificats et clé ssl (TODO: expliquer comment faire ces fichiers): |
175 | 14 | Mehdi Abaakouk | <pre> |
176 | 14 | Mehdi Abaakouk | cp mon_certificat.pem(ou.crt) /etc/puppet/ssl/<HOSTNAME>.pem |
177 | 14 | Mehdi Abaakouk | cp mon_certificat.key /etc/puppet/ssl/<HOSTNAME>.key |
178 | 14 | Mehdi Abaakouk | </pre> |
179 | 14 | Mehdi Abaakouk | |
180 | 14 | Mehdi Abaakouk | Ensuite sur le server de mail (<HOSTNAME>): |
181 | 14 | Mehdi Abaakouk | |
182 | 14 | Mehdi Abaakouk | taper: |
183 | 14 | Mehdi Abaakouk | <pre> |
184 | 1 | Mehdi Abaakouk | # puppet agent-vt |
185 | 14 | Mehdi Abaakouk | ... |
186 | 1 | Mehdi Abaakouk | </pre> |
187 | 1 | Mehdi Abaakouk | |
188 | 64 | Mehdi Abaakouk | note: si il y a des erreurs, relancer une fois avec de chercher le problème. |
189 | 15 | Mehdi Abaakouk | |
190 | 15 | Mehdi Abaakouk | Idem sur le relay |
191 | 15 | Mehdi Abaakouk | |
192 | 64 | Mehdi Abaakouk | Vos serveurs de mail sont prêt |
193 | 15 | Mehdi Abaakouk | |
194 | 21 | Laurent GUERBY | Pour ajouter un alias a /etc/aliases-dovecot il faut editer /etc/puppet/templates/mx1.tetaneutral.net/aliases sur puppet.ttnn |
195 | 14 | Mehdi Abaakouk | |
196 | 6 | Mehdi Abaakouk | h2. Exemple duplication www avec puppet et les backups: |
197 | 6 | Mehdi Abaakouk | |
198 | 6 | Mehdi Abaakouk | Installation d'une vm (ici: puppet-tester) avec ganeti: |
199 | 1 | Mehdi Abaakouk | |
200 | 6 | Mehdi Abaakouk | sur h1: |
201 | 6 | Mehdi Abaakouk | <pre> |
202 | 6 | Mehdi Abaakouk | ./gnt-addvm puppet-tester |
203 | 6 | Mehdi Abaakouk | </pre> |
204 | 7 | Mehdi Abaakouk | |
205 | 64 | 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): |
206 | 7 | Mehdi Abaakouk | |
207 | 7 | Mehdi Abaakouk | <pre> |
208 | 7 | Mehdi Abaakouk | cat www.tetaneutral.net-var-www.20120102.master.tar.gz | gpg -d | tar -xzf - -C / |
209 | 8 | Mehdi Abaakouk | cat www.tetaneutral.net-var-www.20120103.tar.gz | gpg -d | tar -xzf - -C / |
210 | 7 | Mehdi Abaakouk | cat www.tetaneutral.net-var-www.20120104.tar.gz | gpg -d | tar -xzf - -C / |
211 | 6 | Mehdi Abaakouk | </pre> |
212 | 6 | Mehdi Abaakouk | |
213 | 6 | Mehdi Abaakouk | Puis installation de puppet: |
214 | 6 | Mehdi Abaakouk | <pre> |
215 | 6 | Mehdi Abaakouk | $ apt-get install puppet |
216 | 6 | Mehdi Abaakouk | |
217 | 6 | Mehdi Abaakouk | $ cat /etc/puppet/puppet.conf ajouter: |
218 | 6 | Mehdi Abaakouk | [main] |
219 | 6 | Mehdi Abaakouk | logdir=/var/log/puppet |
220 | 6 | Mehdi Abaakouk | vardir=/var/lib/puppet |
221 | 6 | Mehdi Abaakouk | ssldir=/var/lib/puppet/ssl |
222 | 6 | Mehdi Abaakouk | rundir=/var/run/puppet |
223 | 6 | Mehdi Abaakouk | factpath=$vardir/lib/facter |
224 | 6 | Mehdi Abaakouk | templatedir=$confdir/templates |
225 | 6 | Mehdi Abaakouk | pluginsync = true |
226 | 6 | Mehdi Abaakouk | |
227 | 6 | Mehdi Abaakouk | [agent] |
228 | 6 | Mehdi Abaakouk | server=puppet.tetaneutral.net |
229 | 6 | Mehdi Abaakouk | |
230 | 6 | Mehdi Abaakouk | $ puppet agent --test |
231 | 6 | Mehdi Abaakouk | </pre> |
232 | 6 | Mehdi Abaakouk | |
233 | 6 | Mehdi Abaakouk | Sur puppet.teteneutral.net, dans le fichier nodes.pp copie du bloc de la machine www en puppet-tester |
234 | 6 | Mehdi Abaakouk | puis on sign la cle de puppet-tester |
235 | 6 | Mehdi Abaakouk | <pre> |
236 | 6 | Mehdi Abaakouk | puppetca --sign puppet-tester.tetaneutral.net |
237 | 6 | Mehdi Abaakouk | </pre> |
238 | 6 | Mehdi Abaakouk | |
239 | 6 | Mehdi Abaakouk | sur puppet-tester, on descend la configuration via puppet: |
240 | 6 | Mehdi Abaakouk | |
241 | 6 | Mehdi Abaakouk | <pre>puppet agent --test</pre> |
242 | 6 | Mehdi Abaakouk | |
243 | 6 | Mehdi Abaakouk | et pour finir on restaure le backup mysql: |
244 | 6 | Mehdi Abaakouk | |
245 | 1 | Mehdi Abaakouk | <pre> |
246 | 1 | Mehdi Abaakouk | mysql -u root < www.tetaneutral.net-all-mysql-databases.20120103.sql |
247 | 14 | Mehdi Abaakouk | </pre> |
248 | 1 | Mehdi Abaakouk | |
249 | 13 | Mehdi Abaakouk | Et c'est fini ! |
250 | 6 | Mehdi Abaakouk | |
251 | 13 | Mehdi Abaakouk | h2. Ajout d'une machine (obsolete): |
252 | 1 | Mehdi Abaakouk | |
253 | 1 | Mehdi Abaakouk | Sur le client: |
254 | 1 | Mehdi Abaakouk | |
255 | 1 | Mehdi Abaakouk | <pre> |
256 | 1 | Mehdi Abaakouk | $ apt-get install puppet |
257 | 1 | Mehdi Abaakouk | </pre> |
258 | 1 | Mehdi Abaakouk | |
259 | 1 | Mehdi Abaakouk | dans /etc/default/puppet mettre: |
260 | 1 | Mehdi Abaakouk | <pre> |
261 | 1 | Mehdi Abaakouk | START=yes |
262 | 1 | Mehdi Abaakouk | </pre> |
263 | 1 | Mehdi Abaakouk | |
264 | 1 | Mehdi Abaakouk | et dans /etc/puppet/puppet.conf ajouter: |
265 | 1 | Mehdi Abaakouk | <pre> |
266 | 6 | Mehdi Abaakouk | pluginsync=true |
267 | 6 | Mehdi Abaakouk | |
268 | 1 | Mehdi Abaakouk | [agent] |
269 | 1 | Mehdi Abaakouk | server=puppet.tetaneutral.net |
270 | 1 | Mehdi Abaakouk | </pre> |
271 | 1 | Mehdi Abaakouk | |
272 | 1 | Mehdi Abaakouk | Ensuite ajouter la machine dans le puppet master, MOUAHAHA: |
273 | 1 | Mehdi Abaakouk | Sur le client: |
274 | 1 | Mehdi Abaakouk | <pre> |
275 | 1 | Mehdi Abaakouk | $ puppet agent --test |
276 | 1 | Mehdi Abaakouk | warning: peer certificate won't be verified in this SSL session |
277 | 1 | Mehdi Abaakouk | warning: peer certificate won't be verified in this SSL session |
278 | 1 | Mehdi Abaakouk | warning: peer certificate won't be verified in this SSL session |
279 | 1 | Mehdi Abaakouk | Exiting; no certificate found and waitforcert is disabled |
280 | 1 | Mehdi Abaakouk | </pre> |
281 | 1 | Mehdi Abaakouk | |
282 | 1 | Mehdi Abaakouk | Sur le serveur: |
283 | 1 | Mehdi Abaakouk | <pre> |
284 | 1 | Mehdi Abaakouk | $ puppetca --list |
285 | 1 | Mehdi Abaakouk | www.tetaneutral.net |
286 | 1 | Mehdi Abaakouk | |
287 | 1 | Mehdi Abaakouk | $ puppetca --sign --all |
288 | 1 | Mehdi Abaakouk | notice: Signed certificate request for www.tetaneutral.net |
289 | 1 | Mehdi Abaakouk | notice: Removing file Puppet::SSL::CertificateRequest www.tetaneutral.net at '/var/lib/puppet/ssl/ca/requests/www.tetaneutral.net.pem' |
290 | 1 | Mehdi Abaakouk | </pre> |
291 | 1 | Mehdi Abaakouk | |
292 | 1 | Mehdi Abaakouk | Sur le client: |
293 | 1 | Mehdi Abaakouk | <pre> |
294 | 1 | Mehdi Abaakouk | $ puppet agent --test |
295 | 1 | Mehdi Abaakouk | warning: peer certificate won't be verified in this SSL session |
296 | 1 | Mehdi Abaakouk | info: Caching certificate for www.tetaneutral.net |
297 | 1 | Mehdi Abaakouk | info: Caching certificate_revocation_list for ca |
298 | 1 | Mehdi Abaakouk | info: Caching catalog for www.tetaneutral.net |
299 | 1 | Mehdi Abaakouk | info: Applying configuration version '1325516709' |
300 | 4 | Mehdi Abaakouk | info: Creating state file /var/lib/puppet/state/state.yaml |
301 | 4 | Mehdi Abaakouk | notice: Finished catalog run in 0.01 seconds |
302 | 4 | Mehdi Abaakouk | </pre> |
303 | 4 | Mehdi Abaakouk | |
304 | 4 | Mehdi Abaakouk | Sur le serveur, on associe les modules au client: |
305 | 4 | Mehdi Abaakouk | |
306 | 4 | Mehdi Abaakouk | <pre> |
307 | 4 | Mehdi Abaakouk | $ cat manifests/nodes.pp |
308 | 4 | Mehdi Abaakouk | |
309 | 4 | Mehdi Abaakouk | node basenode { |
310 | 2 | Mehdi Abaakouk | include backup |
311 | 5 | Mehdi Abaakouk | include motd |
312 | 5 | Mehdi Abaakouk | } |
313 | 1 | Mehdi Abaakouk | |
314 | 1 | Mehdi Abaakouk | node 'www.tetaneutral.net' inherits basenode { |
315 | 5 | Mehdi Abaakouk | } |
316 | 5 | Mehdi Abaakouk | </pre> |
317 | 5 | Mehdi Abaakouk | |
318 | 5 | Mehdi Abaakouk | |
319 | 5 | Mehdi Abaakouk | |
320 | 64 | Mehdi Abaakouk | h2. Récupération de fichier écrasé par puppet: |
321 | 1 | Mehdi Abaakouk | |
322 | 64 | Mehdi Abaakouk | Voir la liste des fichiers backupés: |
323 | 2 | Mehdi Abaakouk | <pre> |
324 | 1 | Mehdi Abaakouk | find /var/*/puppet/clientbucket -name paths | while read path ; do echo $(cat $path): $(basename $(dirname $path)) $(stat -c %y $path) ; done |
325 | 2 | Mehdi Abaakouk | </pre> |
326 | 2 | Mehdi Abaakouk | Ensuite pour voir le fichier: |
327 | 2 | Mehdi Abaakouk | <pre> |
328 | 6 | Mehdi Abaakouk | A venir ... (un truc avec puppet filebucket ...) |
329 | 2 | Mehdi Abaakouk | </pre> |
330 | 2 | Mehdi Abaakouk | |
331 | 2 | Mehdi Abaakouk | h2. Ajout d'un module (ie: un truc/service/user a configurer), ici module motdpour l'exemple : |
332 | 2 | Mehdi Abaakouk | |
333 | 64 | Mehdi Abaakouk | h3. Création du module |
334 | 2 | Mehdi Abaakouk | |
335 | 2 | Mehdi Abaakouk | <pre> |
336 | 2 | Mehdi Abaakouk | cd /etc/puppet/modules |
337 | 2 | Mehdi Abaakouk | mkdir -p motd/{files,lib,manifests,templates,tests} |
338 | 2 | Mehdi Abaakouk | $ cat motd/manifests/init.pp |
339 | 2 | Mehdi Abaakouk | class motd { |
340 | 1 | Mehdi Abaakouk | file {'motd': |
341 | 2 | Mehdi Abaakouk | ensure => file, |
342 | 2 | Mehdi Abaakouk | path => '/etc/motd.tail', |
343 | 2 | Mehdi Abaakouk | mode => 0644, |
344 | 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." |
345 | 2 | Mehdi Abaakouk | } |
346 | 2 | Mehdi Abaakouk | } |
347 | 2 | Mehdi Abaakouk | </pre> |
348 | 2 | Mehdi Abaakouk | |
349 | 2 | Mehdi Abaakouk | |
350 | 64 | Mehdi Abaakouk | h3. Ajout du module à la liste des modules disponibles |
351 | 1 | Mehdi Abaakouk | |
352 | 2 | Mehdi Abaakouk | <pre> |
353 | 2 | Mehdi Abaakouk | $ cat manifests/modules.pp |
354 | 2 | Mehdi Abaakouk | import "motd" |
355 | 2 | Mehdi Abaakouk | </pre> |
356 | 1 | Mehdi Abaakouk | |
357 | 2 | Mehdi Abaakouk | h3. Utilisation du module pour une node |
358 | 2 | Mehdi Abaakouk | |
359 | 2 | Mehdi Abaakouk | <pre> |
360 | 2 | Mehdi Abaakouk | $ cat manifests/nodes.pp |
361 | 6 | Mehdi Abaakouk | node 'www.tetaneutral.net' { |
362 | 2 | Mehdi Abaakouk | include motd |
363 | 2 | Mehdi Abaakouk | } |
364 | 1 | Mehdi Abaakouk | </pre> |
365 | 1 | Mehdi Abaakouk | |
366 | 1 | Mehdi Abaakouk | |
367 | 64 | Mehdi Abaakouk | h2. Installation du serveur PuppetMaster (obsolete TODO sileht: réécrire) |
368 | 1 | Mehdi Abaakouk | |
369 | 1 | Mehdi Abaakouk | Installation du paquet: |
370 | 1 | Mehdi Abaakouk | <pre> |
371 | 1 | Mehdi Abaakouk | $ apt-get install puppetmaster |
372 | 1 | Mehdi Abaakouk | </pre> |
373 | 1 | Mehdi Abaakouk | |
374 | 9 | Mehdi Abaakouk | Voici le fichier de configuration /etc/puppet/puppet.conf qui permet de maintenir une conf de dev et de prod: |
375 | 1 | Mehdi Abaakouk | <pre> |
376 | 9 | Mehdi Abaakouk | [main] |
377 | 9 | Mehdi Abaakouk | logdir=/var/log/puppet |
378 | 9 | Mehdi Abaakouk | vardir=/var/lib/puppet |
379 | 9 | Mehdi Abaakouk | ssldir=/var/lib/puppet/ssl |
380 | 9 | Mehdi Abaakouk | rundir=/var/run/puppet |
381 | 9 | Mehdi Abaakouk | factpath=$vardir/lib/facter |
382 | 9 | Mehdi Abaakouk | templatedir=$confdir/templates |
383 | 9 | Mehdi Abaakouk | |
384 | 9 | Mehdi Abaakouk | pluginsync = true |
385 | 9 | Mehdi Abaakouk | |
386 | 1 | Mehdi Abaakouk | [master] |
387 | 1 | Mehdi Abaakouk | certname=puppet.tetaneutral.net |
388 | 1 | Mehdi Abaakouk | manifest = $confdir/manifests/site_$environment.pp |
389 | 1 | Mehdi Abaakouk | </pre> |
390 | 9 | Mehdi Abaakouk | |
391 | 9 | Mehdi Abaakouk | Exemple du fichier site_dev.php |
392 | 9 | Mehdi Abaakouk | <pre> |
393 | 9 | Mehdi Abaakouk | cat /etc/puppet/manifests/site_dev.pp |
394 | 9 | Mehdi Abaakouk | import "classes/*.pp" |
395 | 9 | Mehdi Abaakouk | import "keys.pp" |
396 | 9 | Mehdi Abaakouk | import "modules.pp" |
397 | 9 | Mehdi Abaakouk | import "nodes_dev.pp" |
398 | 9 | Mehdi Abaakouk | </pre> |
399 | 9 | Mehdi Abaakouk | |
400 | 64 | Mehdi Abaakouk | 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) |
401 | 64 | Mehdi Abaakouk | Le fichier modules.pp, la liste des modules à chargé. |
402 | 64 | Mehdi Abaakouk | Et enfin nodes_dev.pp la liste des machines puppetisées avec leur configuration. |
403 | 9 | Mehdi Abaakouk | |
404 | 1 | Mehdi Abaakouk | |
405 | 1 | Mehdi Abaakouk | Dans /etc/puppet/fileserver.conf configurer les autorisations: |
406 | 6 | Mehdi Abaakouk | <pre> |
407 | 6 | Mehdi Abaakouk | [files] |
408 | 6 | Mehdi Abaakouk | path /etc/puppet/files |
409 | 6 | Mehdi Abaakouk | allow 91.224.149.0/24 |
410 | 6 | Mehdi Abaakouk | allow 91.224.148.0/24 |
411 | 6 | Mehdi Abaakouk | </pre> |