我有以下定义:
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'],
}
}但是当我运行这个程序时,木偶告诉我我有一个循环:
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 GraphVizjenkins中对nginx的简单引用::nginx引用了它本身。我如何告诉Puppet,我依赖于顶级的nginx类而不是?
我试图将我的依赖更改为Class['::nginx'] (就像我在Ruby中一样),而Puppet现在告诉我它找不到依赖项。
发布于 2012-08-31 13:44:10
做了大量的测试因为你的问题很有趣。
一段时间后发现这篇文章:http://www.mail-archive.com/puppet-users@googlegroups.com/msg08224.html
我同意海报上的观点,即这是一个bug,或者至少不是很好的设计,但是如果您包含具有绝对范围(::nginx)的类,那么您可以为它设置一个要求,如下所示:
class jenkins::nginx{
include ::nginx
file{'/etc/nginx/sites-enabled/jenkins':
source => ...,
require => Class['::nginx'],
}
}发布于 2012-08-31 13:39:52
包括前缀?
包括:nginx
https://serverfault.com/questions/423273
复制相似问题