パペットクラス/リソース間で情報を通信する方法はありますか

パペットクラス/リソース間で情報を通信する方法はありますか

クラス/リソース間で情報を通信する方法はありますか?

エクスポートされたリソースを使用する Icinga によって監視されるように設定するために、すべてのノードに含めるプロファイルがあります。

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"
  }
}

これらのリソースは、リソース コレクターを使用して icinga サーバーで宣言されます。

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

profile::icinga2::host リソースの vars エントリをカスタマイズできるようにしたいのですが、現時点では、ノードの hiera yaml ファイルに icinga_vars データを追加することでこれを行っています。例:

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

ただし、理想的には、ノード自体に含まれるクラス内でこれを行うことになります。

クラス内にデータを設定し、それを別のクラスで読み取る方法はありますか?

Facts は正しい方法ではないようですが、puppetdb も同様です。代替手段はありますか?

たとえば、icinga2::variable クラスを作成し、それを profile::icinga2::host クラスの外で宣言して、profile::icinga2::host クラスで反復処理することはできますか? これはどのように実行され、依存関係はどのように処理されますか? たとえば、icinga2::variables が profile::icinga2::host によって読み取られる準備ができていることを確認する必要があります。 ありがとうございます

関連情報