Kann Vagrant zur Ausführung auf ein Verzeichnis von Puppet-Manifesten verweisen?

9

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:

  1. 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?
  2. 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

SeligkeitIstInGott
quelle

Antworten:

6

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?

Ja, das tust du. Siehe hier :

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.

Darüber hinaus manifestund modulepathwerden auch zugunsten von Verzeichnisumgebungen und des Verhaltens des Manifestverzeichnisses veraltet, siehe hier :

Nachdem die Verzeichnisumgebungen abgeschlossen sind, sind Konfigurationsdateien veraltet. Das Definieren von Umgebungsblöcken in puppet.conf führt zu einer Verfallswarnung, ebenso wie die Verwendung der Einstellungen für Modulpfad, Manifest und config_version in puppet.conf.

Dies ist eine ziemlich große Änderung für viele Bereitstellungen, sollte aber auf lange Sicht eine gute Verbesserung sein.


Und zweitens, hat Vagrant diese neue Änderung "eingeholt", um die Referenzierung von Verzeichnissen in Verbindung mit Puppets Ablehnung des "Imports" zu berücksichtigen?

Nein, hat es nicht; aus ihren Dokumenten:

manifest_file (string) - Der Name der Manifestdatei, die als Einstiegspunkt für den Puppet-Lauf dient. Es wird erwartet, dass diese Manifestdatei im konfigurierten Manifests_Pfad vorhanden ist

Für die Verwendung mit Vagrant müssen Sie sich vorerst nicht mit Abwertungswarnungen befassen, was bedauerlich ist. Der Import soll jedoch erst in 4.x entfernt werden, sodass Vagrant etwas Zeit zum Nachholen hat.

Shane Madden
quelle
Nun, es ist gut zu wissen, dass ich nicht verrückt werde, weil ich seit über einer Stunde versucht habe herauszufinden, was der Deal war. Sind sich die Vagrant-Entwickler der Notwendigkeit dieser Funktion bewusst, oder gibt es einen Ort, an dem solche Ergänzungen vorgeschlagen werden können?
SeligkeitIstInGott
Sieht so aus, als wäre es noch nicht von ihnen verlangt worden - siehe hier . Legen Sie ein Problem dort ab, um es besser auf die moderne Puppe abzustimmen (oder ich mache es, wenn Sie keinen Github-Account haben)!
Shane Madden
Ich denke, meine Entwicklungsmitarbeiter haben alle Github-Konten, aber wenn ich eines habe, weiß ich nicht einmal, wie ich mich anmelden würde. Ich brauche keine, da ich IT bin und kein Programmierer. Würde es Ihnen etwas ausmachen, das schrecklich zu tun?
SeligkeitIstInGott
1
@ SeligkeitIstInGott Sicher, ich werde etwas archivieren lassen!
Shane Madden
2
@ SeligkeitIstInGott Fertig - github.com/mitchellh/vagrant/issues/4039
Shane Madden