Есть ли способ передачи информации между классами/ресурсами puppet?

Есть ли способ передачи информации между классами/ресурсами puppet?

Есть ли способ передачи информации между классами/ресурсами?

У меня есть профиль, который я хочу включить на все узлы, чтобы настроить их как контролируемые 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|>>

Я хочу иметь возможность настраивать запись vars в ресурсе profile::icinga2::host и в данный момент делаю это, добавляя данные icinga_vars в файл hiera yaml для узла, например:

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

Однако в идеале я бы сделал это внутри любых классов, включаемых самим узлом.

Есть ли способ настроить данные в классах, которые затем может прочитать другой класс?

Facts не кажется правильным способом решения этой задачи, как и puppetdb. Есть ли альтернатива?

Могу ли я, например, создать класс icinga2::variable и объявить их вне класса profile::icinga2::host, а затем перебрать их в классе profile::icinga2::host? Как это будет сделано и как будут обрабатываться зависимости, например, мне нужно будет убедиться, что icinga2::variables готовы к чтению profile::icinga2::host Спасибо

Связанный контент