Hoihoi
Mocht ik nou een stuk documentatie/best practice gemist hebben: vertel het me dan; dan kan ik me daar gewoon op storten. Ik heb zelf redelijk wat tutorials gelezen en kan een redelijk beetje ruby....
Goed, de casus:
1: Puppetmaster VM
2: Een zwikje clients
3: Recipes, waaronder aantal met templates, waarbij deze nog redelijk simpel zijn maari k wel facter gebruik.
Wat ik echter een beetje mis is hoe ik parametrised classes kan gebruiken, ik zie in tutorials meestal "hoe maak je een parametrised class" of "hoe zet je puppet simpel op".
Nu heb ik een manifests/nodes.pp met mijn hosts en wat setups erin:
Op zich prima. Het meest simpele recipe is dan ook (/etc/puppet/modules/motd):
[code]
root@puppetmaster:/etc/puppet/modules/motd# find
.
./manifests
./manifests/init.pp
./templates
./templates/motd.erb
[code]
En
En een simpele motd.erb:
(wat voelde ik me 1337 toen dit werkte ;-) ) .
Puntje is dat de echt coole shit zie gebeuren met die parameters, waarbij gebruikers ook meer richting de modules zitten ipv de kale classes... ik weet alleen niet hoe ik dat nou goed vormgeef... de meeste tutorials bieden of heel toffe dingen aan waarbij je niet duidelijk is hoe je hosts moet declareren ermee, en er zijn tutorials waarin alles beschreven staat maar waarbij je qua niveau niet veel verder komt dan ik hierboven.
Voorbeeldje is dat ik nueen mysql-localhost heb (die skip-networking doet) en een mysql-eth0 (vies) ide luistert op eth0. Dat wil ik eigenlijk via een parameter doen dus
.
Kan iemand me een beetje vertellen hoe ik dit nu wijselijk indeel/omvorm tot een goede indeling? ik ben de bomen een beetje kwijt wat dat betreft.
Het liefst zou ik zoiets hebben als:
Dat idee. En ik zie atm niet echt in hoe ik dat slim kan bereiken.
Mocht ik nou een stuk documentatie/best practice gemist hebben: vertel het me dan; dan kan ik me daar gewoon op storten. Ik heb zelf redelijk wat tutorials gelezen en kan een redelijk beetje ruby....
Goed, de casus:
1: Puppetmaster VM
2: Een zwikje clients
3: Recipes, waaronder aantal met templates, waarbij deze nog redelijk simpel zijn maari k wel facter gebruik.
Wat ik echter een beetje mis is hoe ik parametrised classes kan gebruiken, ik zie in tutorials meestal "hoe maak je een parametrised class" of "hoe zet je puppet simpel op".
Nu heb ik een manifests/nodes.pp met mijn hosts en wat setups erin:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| root@puppetmaster:/etc/puppet# cat manifests/nodes.pp node basenode { include ntp include denyhosts include ssh include nrpe include apt include vim include mailname include sudo include motd include apt-get-clean-all } node 'colo-host' inherits basenode { include resolv } node 'www' inherits colo-host { } nog meer nodes.... |
Op zich prima. Het meest simpele recipe is dan ook (/etc/puppet/modules/motd):
[code]
root@puppetmaster:/etc/puppet/modules/motd# find
.
./manifests
./manifests/init.pp
./templates
./templates/motd.erb
[code]
En
code:
1
2
3
4
5
6
7
8
| class motd { file { "/etc/motd": owner => root, group => root, mode => 644, content => template('motd/motd.erb'), } } |
En een simpele motd.erb:
code:
1
| Welkom op <%= fqdn %> |
(wat voelde ik me 1337 toen dit werkte ;-) ) .
Puntje is dat de echt coole shit zie gebeuren met die parameters, waarbij gebruikers ook meer richting de modules zitten ipv de kale classes... ik weet alleen niet hoe ik dat nou goed vormgeef... de meeste tutorials bieden of heel toffe dingen aan waarbij je niet duidelijk is hoe je hosts moet declareren ermee, en er zijn tutorials waarin alles beschreven staat maar waarbij je qua niveau niet veel verder komt dan ik hierboven.
Voorbeeldje is dat ik nueen mysql-localhost heb (die skip-networking doet) en een mysql-eth0 (vies) ide luistert op eth0. Dat wil ik eigenlijk via een parameter doen dus
Kan iemand me een beetje vertellen hoe ik dit nu wijselijk indeel/omvorm tot een goede indeling? ik ben de bomen een beetje kwijt wat dat betreft.
Het liefst zou ik zoiets hebben als:
code:
1
2
3
4
5
6
7
| Host 'www01': { require apache ssl #apache met ssl als parameter requiren vhost 'www.foo.bar' { ip = bla webroot = bla2 } |
Dat idee. En ik zie atm niet echt in hoe ik dat slim kan bereiken.