Ich verwende Vagrant, um eine anfängliche Puppet-Konfiguration zu starten, und bin verwirrt darüber, wie mehrere Manifeste (außer site.pp) in den Puppet-Ausführungsworkflow aufgenommen / ausgeführt werden können, ohne die zusätzlichen Manifeste in Module umzuwandeln und auf diese Weise einzuschließen.
Im Puppet Manifests-Verzeichnis, auf das ich Vagrant zeige (siehe unten), habe ich zwei Manifeste, die ausgeführt werden sollen: site.pp und hierasetup.pp.
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "puppet_files/manifests"
puppet.module_path = "puppet_files/modules"
puppet.manifest_file = "site.pp"
puppet.options = "--verbose --debug"
end
Derzeit ist site.pp das Manifest, das hierasetup.pp aufruft. Meine site.pp sieht folgendermaßen aus:
File {
owner => 'root',
group => 'root',
mode => '0644',
}
import "hierasetup.pp"
include jboss
Aber ich bekomme diesen Fehler über die Ablehnung von "Import":
Warnung: Die Verwendung von 'Import' ist unter /tmp/vagrant-puppet-1/manifests/site.pp:33 veraltet. Siehe http://links.puppetlabs.com/puppet-import-deprecation (unter grammar.ra: 610: in `_reduce_190 ')
Entsprechend der URL, auf die unter "Zu versuchende Dinge" verwiesen wird, heißt es " Um Ihre Knotendefinitionen in separaten Dateien zu speichern, geben Sie ein Verzeichnis als Hauptmanifest an ".
Weiter sagt dieser Puppendokument über Hauptmanifeste :
" Empfohlen: Wenn Sie das Hauptmanifest häufig verwenden, anstatt sich auf eine ENC zu verlassen, sollten Sie die Manifesteinstellung in $ confdir / manifests ändern. Auf diese Weise können Sie Ihren Code der obersten Ebene in mehrere Dateien aufteilen und dabei das Schlüsselwort import vermeiden wird auch dem Verhalten einfacher Umgebungen entsprechen. "
Es scheint, dass Puppet auf ein gesamtes Verzeichnis anstatt nur auf eine bestimmte Manifestdatei verweisen kann, sodass ich erwarten würde, dass Vagrant dies vorsieht und mir erlaubt, die Zeile " puppet.manifest_file =" site.pp "zu löschen und auf zu zeigen Stattdessen das übergeordnete Verzeichnis, in dem alle * .pp-Dateien ausgeführt werden. Das Entfernen dieser Zeile in Vagrant führt jedoch lediglich zu einer Beschwerde über eine erwartete "default.pp" an ihrer Stelle:
Puppet Provisioner: * Das konfigurierte Puppet Manifest fehlt. Bitte geben Sie einen Pfad zu einem vorhandenen Manifest an: /some/path/puppet_files/manifests/default.pp
So:
- Verstehe ich zunächst die "neue" (nicht importierte) Art, mehrere Manifeste korrekt aufzurufen, indem auf ein Verzeichnis verwiesen wird, in dem alle darin enthaltenen * .pp-Dateien ausgeführt werden?
- Und zweitens, hat Vagrant diese neue Änderung "eingeholt", um die Referenzierung von Verzeichnissen in Verbindung mit Puppets Ablehnung des "Imports" zu berücksichtigen?
Update: Dank Shane wurde das Problem mit # 2 (Vagrants Code wurde nicht erfasst, um auf Verzeichnisse von Marionettenmanifesten zu verweisen) auf Vagrants GitHub Issue Tracker-Site gemeldet und seitdem gepatcht: https://github.com/mitchellh/vagrant / Issues / 4169