Gibt es eine Möglichkeit, Informationen zwischen Puppet-Klassen/Ressourcen zu kommunizieren?

Gibt es eine Möglichkeit, Informationen zwischen Puppet-Klassen/Ressourcen zu kommunizieren?

Gibt es eine Möglichkeit, Informationen zwischen Klassen/Ressourcen auszutauschen?

Ich habe ein Profil, das ich in alle Knoten einbinden möchte, um sie so einzurichten, dass sie von Icinga überwacht werden, das eine exportierte Ressource verwendet:

class profile::icinga2::host {
  @@::icinga2::object::host { $::fqdn:
      display_name     => $::fqdn,
      address          => $::ipaddress,
      vars             => hiera_hash('icinga_vars',{}) + {
         "dns_lookup" => $::fqdn,
         "dns_expected_answers" => $::ipaddress,
      },
      target           => "/etc/icinga2/conf.d/puppet.d/${::fqdn}.conf"
  }
}

Diese Ressourcen werden dann mithilfe des Ressourcen-Sammlers im Icinga-Server deklariert:

<<| icinga2::object::host|>>

Ich möchte in der Lage sein, den Vars-Eintrag in der Ressource profile::icinga2::host anzupassen und mache das derzeit, indem ich icinga_vars-Daten in die Hiera-YAML-Datei für den Knoten einfüge, z. B.:

icinga_vars:
    http_uri: "http://puppetboard.zoo.lan" 

Idealerweise würde ich dies jedoch innerhalb aller Klassen tun, die vom Knoten selbst eingeschlossen werden.

Gibt es eine Möglichkeit, Daten in Klassen einzurichten, die dann von einer anderen Klasse gelesen werden können?

Fakten scheinen nicht der richtige Weg zu sein, und PuppetDB auch nicht. Gibt es eine Alternative?

Kann ich beispielsweise eine icinga2::variable-Klasse erstellen und diese außerhalb der profile::icinga2::host-Klasse deklarieren und sie dann in der profile::icinga2::host-Klasse durchlaufen? Wie würde das gemacht werden und wie würden Abhängigkeiten gehandhabt werden? Ich müsste beispielsweise sicherstellen, dass die icinga2::variables bereit sind, von profile::icinga2::host gelesen zu werden. Danke.

verwandte Informationen