在木偶中,我有以下两个类:
class zabbix-agent {
package { 'zabbix-agent': }
->
service { 'zabbix-agent':
ensure => running
}
}
class zabbix-agent-cassandra {
include zabbix-agent
Class['zabbix-agent']
->
file { '/etc/zabbix/zabbix_agent.conf.d/cassandra.conf':
}
~>
Service['zabbix-agent']
}
这一开始看起来很棒,因为它允许从任何类添加新配置文件到/etc/zabbix/zabbix_agent.conf.d/,并在这样做时重新启动zabbix-agent。
但是存在依赖循环:
Service[zabbix-agent] => Class[Zabbix-agent] => File[/etc/zabbix/zabbix_agentd.conf.d/cassandra.conf] => Service[zabbix-agent]
有没有办法避免依赖循环?
答案 0 :(得分:0)
你告诉Puppet
这是有问题的,因为Puppet将恰好触摸每个资源一次。
最好的方法可能是为zabbix模块带来更多结构。
class zabbix::agent {
include zabbix::package
include zabbix::service
Class['zabbix::package'] -> Class['zabbix::service']
}
这允许你只是
Class['zabbix::package'] -> File[...] ~> Class['zabbix::service']
这是DRYer,在您的特定情况下,避免循环依赖。