В настоящее время я пишу марионеточный модуль для управления моей конфигурацией sensu.
Разделили все это на несколько классов и поместили их в соответствующие файлы в каталоге sensu "manifestests":
sensu::common (common.pp)
sensu::common::package (common/package.pp)
sensu::common::config (common/config.pp)
sensu::server (server.pp)
sensu::server::config (server/config.pp)
В моем server.pp
, У меня есть следующие
class sensu::server {
include sensu::common
include sensu::server::config
Class['sensu::common'] -> Class['sensu::server::config']
}
И nodes.pp
выглядит так:
class role_monitoring_server {
$my_role = 'monitoring_server'
...
include sensu::server
}
node my_cool_server {
include role_monitoring_server
}
Как многие из вас могли догадаться, у меня проблемы с зависимостью классов в server.pp
:
Class['sensu::common'] -> Class['sensu::server::config']
просто не работает. Класс sensu::server::config
необходимо поместить файл в каталог, который будет создан только sensu::common
. Дело в том, что sensu::server::config
всегда будет применяться до sensu::common
а не после того, как ожидалось.
Что я скучаю? В Интернете так много вопросов, но я просто не нахожу ответа, так как не знаю, что искать.
Вы создаете отношения зависимости с sensu::common
класс, но не существует неявной зависимости между sensu::common
и его «дети», package
и config
. Итак, если ваша конфигурация не выглядит иначе (я предполагаю, что sensu::common
класс это просто пара include
линий?), которые по-прежнему можно применять в любое время в отношении sensu::server::config
класс.
Вы, вероятно, захотите построить отношения с классом, который содержит необходимые вам ресурсы; вы фактически создаете требующуюся связь между каждым ресурсом в одном классе и каждым ресурсом в другом (в зависимости от того, какой из них нужен, или оба):
Class['sensu::common::package'] -> Class['sensu::server::config']
Class['sensu::common::config'] -> Class['sensu::server::config']