puppetlabs apache vhost hiera howto
Das waren in etwa die Stichworte in der Suche als ich versucht habe meine mit dem puppetlabs/apache Modul definierten Apache vhosts aus der site.pp nach hiera zu migrieren. Es wollte nämlich einfach nicht klappen. Nach einiger Zeit bin ich dann darauf gestoßen, dass es sich bei dem apache::vhost um einen sogenannten Defined Type handelt. Diese sind sehr ähnlich zu Klassen, lassen sich aber im Gegensatz zu diesen mehrfach auf einem Node definieren.
Das automatische Parameter-Lookup wie bei den Klassen funktioniert bei Defined Types hingegen nicht. Lösung ist die create_resources() Funktion. Aber damit ich das später auch noch verstehe wenn ich hier in den Blogeintrag hineingucke schreibe ich ein praktisches Beispiel auf.
Ein Apache vhost in der site.pp:
node 'www.example.org' inherits default {
apache::vhost {'www.example.org':
servername => 'www.example.org',
serveraliases => [ 'example.org' ],
serveradmin => 'webmaster@example.org',
port => '80',
docroot => '/var/www/example.org/www/',
} |
node 'www.example.org' inherits default {
apache::vhost {'www.example.org':
servername => 'www.example.org',
serveraliases => [ 'example.org' ],
serveradmin => 'webmaster@example.org',
port => '80',
docroot => '/var/www/example.org/www/',
}
wird in hiera zu:
---
apache::vhost:
'www.example.org':
servername: 'www.example.org'
serveraliases:
- 'example.org'
serveradmin: 'webmaster@example.org'
port: '80'
docroot: '/var/www/example.org/www/' |
---
apache::vhost:
'www.example.org':
servername: 'www.example.org'
serveraliases:
- 'example.org'
serveradmin: 'webmaster@example.org'
port: '80'
docroot: '/var/www/example.org/www/'
und damit dieser Eintrag auch ausgewertet und der vhost erzeugt wird sieht die site.pp danach wie folgt aus:
node 'www.example.org' inherits default {
$myApacheVhosts = hiera('apache::vhost', {})
create_resources('apache::vhost', $myApacheVhosts)
} |
node 'www.example.org' inherits default {
$myApacheVhosts = hiera('apache::vhost', {})
create_resources('apache::vhost', $myApacheVhosts)
}
Ich empfehle hier wärmstens das Chapter 3 – Using Hiera von Puppet Lunch. Ich habe lange im Netz gesucht und bin schließlich dort fündig geworden.