有没有办法在类别/资源之间传递信息?
我有一个配置文件,想要将其包含在所有节点上,以将它们设置为由使用导出资源的 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 条目,目前通过将 icinga_vars 数据添加到节点的 hiera yaml 文件中来实现,例如:
icinga_vars:
http_uri: "http://puppetboard.zoo.lan"
然而理想情况下我会在节点本身包含的任何类中执行此操作。
有没有办法在类中设置数据,然后可以由不同的类读取?
事实似乎不是正确的做法,puppetdb 也是如此,还有其他选择吗?
例如,我可以创建一个 icinga2::variable 类并在 profile::icinga2::host 类之外声明这些类,然后在 profile::icinga2::host 类中对它们进行迭代吗?该怎么做,如何处理依赖关系,例如,我需要确保 icinga2::variables 已准备好被 profile::icinga2::host 读取,谢谢