Ich versuche, mich darum zu kümmern, wie ich von etwas, das ich in meiner großen site.pp-Datei mache, in eine Struktur übergehen kann, die ich in hiera verwenden kann. Beim Lesen der Puppendokumente ist mir nicht klar, wie genau die Hiera-Daten ausgewertet werden und wann sie in das Bild passen. Ich habe kürzlich ein Upgrade von Puppet 2.7.x auf 3.3.x durchgeführt. Dies schließt die Hiera als Teil des Standardpakets ein, daher wollte ich mich endlich damit befassen, da dies mein Setup leichter lesbar / verständlich machen sollte.
Ich verwende zur Unterstützung von Systemen mehrere externe Organisationen. Dies umfasst die Konfiguration von Systemen, die für jede Organisation einzigartig sind. Oben auf meiner site.pp habe ich eine Struktur wie unten. Womit ich Fakten für jede Organisation basierend auf einem regulären Ausdruck festlege, der mit den Clientcert-Fakten übereinstimmt, die so konfiguriert und ausgegeben werden, dass sie jede Organisation zuverlässig identifizieren.
# match organization
case $::clientcert {
/.*example1.org/ :
{ $snmp_ro_community='...'
$snmp_location='Example Org 1'
... }
/.*example2.org/ :
{ $snmp_ro_community='...'
$snmp_location='Example Org 2'
... }
/.*example3.org/ :
{ $snmp_ro_community='...'
$snmp_location='Example Org 3'
... }
/.*example4.org/ :
{ $snmp_ro_community='...'
$snmp_location='Example Org 4'
... }
}
Beim Durchsuchen von Beispielen sehe ich keine Möglichkeit, in meiner hiera.yaml-Datei einen Mustervergleich durchzuführen. Ich vermute, ich muss etwas Offensichtliches vermissen.
Ich möchte mich dabei nicht auf eine benutzerdefinierte Tatsache verlassen. Ich halte mich lieber an das Client-Zertifikat, da ich sicher bin, dass dies die Organisation und das System korrekt identifiziert und mithilfe einer starken Kryptografie bestätigt wurde. Ich möchte die Werte einer Organisation nicht einer anderen Organisation geben.
site.pp
mit einem Hiera-Setup für Ihre Klassen und Klassenparameter koexistieren ?