Wie kann ich meine Hiera-Konfiguration nach Rollen aufteilen?

Ich benutze hiera, um Klassen wie @ zuzuweiswebserver oderdbserver zu meinen Knoten. Daswebserver class enthält nur Apache und legt einige Einstellungen fest (z. B. port). Offensichtlich möchte ich diese Konfiguration nicht für jeden Knoten replizieren, also habe ich sie in common.yaml abgelegt. Da meine common.yaml jedoch immer größer wird, möchte ich sie aufteilen. Ich hätte gerne eine Datei mit der Konfiguration für daswebserver Rolle, eine andere für diedbserver Rolle usw. Ich stelle mir meine hiera.yaml so vor:

:hierarchy:
  - "fqdn/%{::fqdn}"
  - "role/%{ROLE}"
  - common

Bei dem dierole Ordner würde Dateien wie @ enthaltwebserver.yaml, appserver.yaml, dbserver.yaml. Ich habe in verschiedenen Blog-Posts gesehen, dass die Lösung darin besteht, einen benutzerdefinierten "Rollen" -Fakt zu erstellen. Die meisten von ihnen erreichen dies jedoch, indem sie diesen Fakt aus einer Datei auf dem Agentenknoten laden (z. B. von/etc/role), was für mich den Punkt der Marionette zu besiegen scheint (ich benutze die Marionette speziell, damit ich mich nicht bei jedem Knoten anmelden und die Konfiguration jedes Mal ändern muss, wenn eine neue Rolle darin enthalten sein soll).

Um klar zu sein, ich möchte keine Dateien auf dem Agenten bearbeiten müssen, damit dies funktioniert. Ich möchte, dass alles mit der Konfiguration auf dem Master ausgeführt wird.

Ich schätze, ich könnte so etwas wie das Folgende haben und jede Rolle als Element in der Hierarchie erschöpfend auflisten, aber das scheint nicht so überschaubar.

:hierarchy:
  - "fqdn/%{::fqdn}"
  - "webserver"
  - "appserver"
  - "dbserver"
  - common

Gibt es eine Möglichkeit, dies zu lösen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage