
Betrachten Sie diese beiden Puppet-Moduldateien:
# File modules/a/manifests/b/c.pp
class a::b::c {
include b::c
}
# File modules/b/manifests/c.pp
class b::c {
notify { "In b::c": }
}
Es scheint, dass Puppet, wenn es die include b::c
Direktive in der Klasse findet a::b::c
, nach der entsprechenden *.pp-Datei sucht, indem es von der aktuellen Klasse aus zurückblickt und entscheidet, dass es die richtige Datei unter findet . Mit anderen Worten, es wird in dieselbe *.pp-Datei ../../b/c.pp
aufgelöst , in der die Anweisung erscheint:b::c
include b::c
modules/a/manifests/b/c.pp
Ich habe erwartet (und möchte), dass es stattdessen die Datei findet und lädt modules/b/manifests/c.pp
. Gibt es eine Möglichkeit, Puppet dazu zu bringen? Falls nicht, scheint es mir, dass Modulnamen nirgendwo andere Modulnamen enthalten dürfen, was eine ziemlich überraschende Einschränkung ist.
Antwort1
um es nach oben zu zwingen, verwenden Sie 'include ::b::c'