2015-03-25 20 views
0

在傀儡,我有以下兩類:重新啓動其他類的服務,同時取決於其他類,創建一個依賴循環

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

你告訴傀儡

  • 管理ZABBIX包和服務
  • 如果配置文件改變管理配置文件
  • 之前做到這一點,管理服務(再次)

這是有問題的,因爲Puppet只會觸摸每個資源一次。

最好的方法可能是將更多的結構帶到你的zabbix模塊。

class zabbix::agent { 
    include zabbix::package 
    include zabbix::service 
    Class['zabbix::package'] -> Class['zabbix::service'] 
} 

這可以讓你只

Class['zabbix::package'] -> File[...] ~> Class['zabbix::service'] 

這是乾燥器,你的具體情況,避免循環依賴。

+0

該文件將在zabbix-agent包創建的文件夾中創建,因此我必須確保在管理文件之前安裝了該文件。然後我需要重新啓動服務。 – arnaud576875 2015-03-25 13:50:14

+0

當然,你應該堅持你的'Class ['zabbix :: package'] - > File [...]'。應該仍然沒有循環。將編輯到答案。 – 2015-03-25 14:32:51

相關問題