如何在包含类时打破Puppet中的依赖关系

我有以下定义:

class nginx::install{ ... } class nginx::service{ ... } class nginx::config{ ... } class nginx{ include nginx::install, nginx::service, nginx::config } class jenkins::nginx{ include nginx file{'/etc/nginx/sites-enabled/jenkins': source => ..., require => Class['nginx'], } } 

但是当我运行这个时,Puppet告诉我我有一个循环:

 err: Could not apply complete catalog: Found 1 dependency cycle: (Class[Jenkins::Nginx] => File[/etc/nginx/sites-available/jenkins] => Class[Jenkins::Nginx]) Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz 

jenkins :: nginx中对nginx的简单引用引用了它自己。 我如何告诉Puppet,我依赖于顶层的nginx类呢?

我试图改变我的依赖Class['::nginx'] (就像我在Ruby中),木偶现在告诉我,它无法find依赖。

做了很多testing,因为你的问题很有趣…

一段时间后发现这篇文章: http : //www.mail-archive.com/[email protected]/msg08224.html

我同意海报,这是一个错误,或者至less没有很好的devise,但如果你包括绝对范围的类(:: nginx),然后你可以设置一个需求,如下所示:

 class jenkins::nginx{ include ::nginx file{'/etc/nginx/sites-enabled/jenkins': source => ..., require => Class['::nginx'], } } 

包含前缀?

包括main:nginx