模块中的Puppet类的依赖关系

目前,我正在编写一个pipe理我的敏感configuration的傀儡模块。

已经把整个事物分成几个类,并把它们放在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创build。 问题是, sensu::server::config将始终在sensu::common之前应用,而不是像预期的那样。

我错过了什么? networking上有这么多的问题,但我没有find答案,因为我不知道该找什么。

你正在用sensu::common类创build依赖关系,但是sensu::common和它的“children”, packageconfig之间没有隐式的依赖关系。 所以,除非你的configuration看起来否则(我假设sensu::common类只是一对include行?)那些仍然可以在任何时候与sensu::server::config类相关的自由应用。

您可能想要与包含您需要的资源的类build立关系; 您正在有效地创build一个需求关系,将一个类中的每个资源创build为另一个资源中的每个资源(无论哪个是需要的,或者两者都有):

 Class['sensu::common::package'] -> Class['sensu::server::config'] Class['sensu::common::config'] -> Class['sensu::server::config']