Files
openvox-docker/hiera_config.md
2026-03-02 15:40:16 +01:00

2.7 KiB
Executable File

Hiera Konfiguration: Kurzbeschreibung

Diese Datei erklärt die grundlegenden Einstellungen in der hiera.yaml, die für dieses Projekt konfiguriert wurde.

Die Datei hiera.yaml

version: 5
defaults:
  datadir: data
  data_hash: yaml_data
hierarchy:
  - name: "Per-Node-Konfiguration (pro Server)"
    path: "nodes/%{trusted.certname}.yaml"
  - name: "Allgemeine Konfiguration (für alle)"
    path: "common.yaml"

version: 5

Dies ist die Standardversion für moderne Puppet-Installationen und muss an erster Stelle stehen.

defaults

Hier werden Standardwerte für die gesamte Hierarchie festgelegt.

  • datadir: data: Teilt Hiera mit, dass alle Datenpfade relativ zum Unterverzeichnis data sind. Das Haupt-Datenverzeichnis ist also code/environments/production/data/.
  • data_hash: yaml_data: Gibt an, dass die Datenquelle eine YAML-Datei ist.

hierarchy

Dies ist das Herzstück von Hiera. Es ist eine geordnete Liste, die definiert, in welcher Reihenfolge Puppet nach Daten sucht. Die Suche stoppt beim ersten gefundenen Wert, es sei denn, ein "merge behavior" (Zusammenführungsverhalten) ist definiert.

  1. path: "nodes/%{trusted.certname}.yaml"

    • Bedeutung: Dies ist die höchste Priorität. Hiera sucht zuerst nach einer Datei im data/nodes/-Verzeichnis, deren Name dem Zertifikatsnamen des anfragenden Servers entspricht (z.B. arch-2.lxd.yaml).
    • Zweck: Hier werden Konfigurationen hinterlegt, die nur für einen einzigen, spezifischen Server gelten.
    • %{trusted.certname} ist eine Puppet-Variable, die den verifizierten Namen des Agenten enthält.
  2. path: "common.yaml"

    • Bedeutung: Dies ist die niedrigste Priorität. Wenn in den spezifischeren Ebenen (wie der pro-Node-Datei) kein Wert gefunden wurde, sucht Hiera hier.
    • Zweck: Dies ist der Ort für die Standardkonfiguration, die für alle Server gelten soll.

Die Datei site.pp

Die site.pp wurde auf eine einzige Zeile reduziert:

lookup('classes', {merge => 'unique'}).include
  • lookup('classes', ...): Diese Funktion startet eine Suche in der Hiera-Hierarchie nach dem Schlüssel classes.
  • {merge => 'unique'}: Dies ist das "Zusammenführungsverhalten". Es weist Hiera an, nicht beim ersten Treffer aufzuhören, sondern alle Ebenen der Hierarchie zu durchsuchen und eine Liste aller gefundenen Werte für classes zu erstellen, wobei Duplikate entfernt werden.
  • .include: Diese Funktion nimmt die resultierende Liste von Klassennamen und deklariert sie, sodass Puppet sie anwendet.

Für den Server arch-2.lxd findet Hiera also test in der Node-spezifischen Datei und all_system in der common.yaml-Datei, fügt beide zu einer Liste zusammen und wendet beide Klassen an.