Puppet

模組中的 Puppet 類依賴關係

  • November 16, 2013

目前,我正在編寫一個 puppet 模組來管理我的 sensu 配置。

將整個東西分成幾個類,並將它們放入 sensu“manifests”目錄中的各自文件中:

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']

引用自:https://serverfault.com/questions/424808