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