Ich habe folgende Definitionen:
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'],
}
}
Aber wenn ich das mache, sagt mir Puppet, dass ich einen Zyklus habe:
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
Der einfache Verweis auf nginx in jenkins :: nginx verweist auf sich selbst. Wie kann ich Puppet mitteilen, dass ich stattdessen von der Nginx-Klasse der obersten Ebene abhängig bin?
Ich habe versucht, meine Abhängigkeit in zu ändern Class['::nginx']
(als wäre ich in Ruby), und Puppet sagt mir jetzt, dass die Abhängigkeit nicht gefunden werden kann.
Antworten:
Habe eine Menge Tests gemacht, da deine Frage interessant war ...
Fand diesen Beitrag nach einer Weile: http://www.mail-archive.com/[email protected]/msg08224.html
Ich stimme dem Poster zu, dass dies ein Fehler ist oder zumindest nicht gut gestaltet, aber wenn Sie die Klasse mit dem absoluten Gültigkeitsbereich (:: nginx) einschließen, können Sie eine Anforderung dafür festlegen, wie folgt:
quelle
Mit Präfix einschließen?
include main: nginx
quelle
Could not find dependency Class[Main::Nginx]