有没有办法在傀儡类/资源之间传递信息

有没有办法在傀儡类/资源之间传递信息

有没有办法在类别/资源之间传递信息?

我有一个配置文件,想要将其包含在所有节点上,以将它们设置为由使用导出资源的 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 读取,谢谢

相关内容