我有以下定义:
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 中一样),而 Puppet 现在告诉我它找不到依赖项。
答案1
由于你的问题很有趣,所以做了大量测试......
过了一段时间发现了这个帖子: http://www.mail-archive.com/[电子邮件保护]/msg08224.html
我同意海报的观点,这是一个错误,或者至少设计得不是很好,但如果你包含具有绝对范围的类(:: nginx),那么你可以设置对它的要求,如下所示:
class jenkins::nginx{
include ::nginx
file{'/etc/nginx/sites-enabled/jenkins':
source => ...,
require => Class['::nginx'],
}
}
答案2
包含前缀吗?
包括主要:nginx