Ich benutze Hiera, um Klassen wie webserver
oder dbserver
zu meinen Knoten zuzuweisen. Die Klasse webserver
enthält nur Apache und setzt einige Configs darauf (z. B. Port). Offensichtlich möchte ich diese Konfiguration nicht für jeden Knoten replizieren, also stelle ich es in Common.Yaml. Allerdings wird mein common.yaml groß, also möchte ich es aufteilen. Ich möchte für die webserver
Rolle eine Datei enthält, die Config haben, eine andere für die dbserver
Rolle usw. Ich stelle mir vor, meine hiera.yaml etwas wie folgt aussehen:Wie kann ich meine Hiera-Konfiguration nach Rollen aufteilen?
:hierarchy:
- "fqdn/%{::fqdn}"
- "role/%{ROLE}"
- common
Wo der role
Ordner enthalten würde Dateien wie webserver.yaml
, appserver.yaml
, dbserver.yaml
. Ich habe verschiedene Blogposts gesehen, die sagen, dass die Lösung darin besteht, eine benutzerdefinierte Rolle zu erstellen, aber die meisten erreichen das, indem sie diese Tatsache aus einer Datei auf dem Agentenknoten laden (zB von /etc/role
), was ich zu besiegen scheint der Punkt der Puppe (ich benutze Marionette spezifisch, also muss ich mich nicht in jeden Knoten einloggen und irgendeine Konfiguration jedes Mal ändern, wenn ich will, dass es eine neue Rolle hat).
Um klar zu sein, ich möchte nicht Dateien auf dem Agenten bearbeiten müssen, um dies zum Funktionieren zu bringen, ich will alles mit der Konfiguration, die auf dem Master ist getan werden.
Ich denke, ich könnte etwas wie die folgenden und erschöpfend jede Rolle als ein Element in der Hierarchie auflisten, aber das scheint nicht so überschaubar.
:hierarchy:
- "fqdn/%{::fqdn}"
- "webserver"
- "appserver"
- "dbserver"
- common
Gibt es eine Möglichkeit, dies zu lösen?