Nachdem wir unsere Klassen definiert haben, können wir diesen bestimmten Hosts oder Hostgruppen zuweisen. Dies ist zum einen manuell über die Datei /etc/puppet/environments/production/manifests/site.pp
oder im Webinterface von Foreman möglich.
Zuweisung über site.pp
Die Zuweisung folgt dabei ebenfalls dem bereits bekannten deklarativen Syntax der Moduldefinitionen.
Standardelement ist der virtuelle Node default
. Die darin deklarierten Konfigurationen werden ausgeführt wenn keine passende Node Regel vorhanden ist, der Hostname als keiner Definition entspricht.
node default {
}
Möglichkeit 1
Sehen wir uns folgendes Beispiel an. Hiermit wird dem Host foo.bar die Klasse modulname zugewiesen.
node 'foo.bar' {
include modulname
}
Möglichkeit 2
Zusätzlich besteht die Möglichkeit die Zuweisung ähnlich der von den Modulen bekannten Ressourcen Zuweisung zu gestalten.
node 'foo.bar' {
class { 'modulname': }
}
Der Vorteil dieser Herangehensweise liegt darin, dass wir der Klasse noch weitere Parameter mitgeben können.
node 'foo.bar' {
class { 'modulname':
document_root => '/var/www'
}
}
Praxistipp: Werden keine Parameter benötigt, sollte man include
verwenden. Andernfalls kommt die Ressourcen ähnliche Zuweisung mit class
zum Einsatz.
Wildcards / Regular Expressions
Wie bereits zuvor angesprochen bietet ein sauberes Namensschema beim Konfigurationsmanagement viele Vorteile. Puppet unterstützt in den Node Zuweisungen Regular Expressions, wodurch sich Systeme mit gleicher Funktion mit einer Definition behandeln lassen.
node /^(web|www)\.enteksystems.local$/ {
include modulname
}
Diese Regel wird auf alle Server mit dem Namen web.enteksystems.local
oder www.enteksystems.local
angewendet.
Um die Regular Expressions zuvor zu testen, empfiehlt sich ein Online Regex Tester.