Czy Vagrant może wskazać katalog manifestów Marionetek do wykonania?

9

Korzystam z Vagrant, aby szybko rozpocząć wstępną konfigurację Puppet i jestem zdezorientowany, jak włączyć / uruchomić wiele manifestów (innych niż tylko site.pp) w przepływie pracy wykonania marionetki bez przekształcania dodatkowych manifestów w moduły i włączania ich w ten sposób.

W katalogu manifestów marionetek, na który wskazuję Vagrant (patrz poniżej), mam dwa manifesty, które chcę wykonać: site.pp i 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 

Obecnie posiadam site.pp jako manifest, który wywołuje hierasetup.pp. Mój site.pp wygląda następująco:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Ale pojawia się błąd dotyczący wycofania „importu”:

Ostrzeżenie: użycie „importu” jest przestarzałe na /tmp/vagrant-puppet-1/manifests/site.pp:33. Zobacz http://links.puppetlabs.com/puppet-import-deprecation (at gramatyka.ra: 610: w `_reduce_190 ')

Zgodnie z przywoływanym adresem URL w części „Zamiast tego spróbuj” mówi „ Aby zachować definicje węzłów w osobnych plikach, określ katalog jako główny manifest ”.

Co więcej, ten dokument kukiełkowy na temat głównych manifestów mówi:

Zalecane: Jeśli intensywnie używasz głównego manifestu zamiast polegać na ENC, rozważ zmianę ustawienia manifestu na $ confdir / manifest. Pozwala to podzielić kod najwyższego poziomu na wiele plików, unikając słowa kluczowego importu. będzie również pasować do zachowania prostych środowisk ”.

Wygląda na to, że Puppet może odwoływać się do całego katalogu zamiast do konkretnego pliku manifestu, tak że spodziewałbym się, że Vagrant zapewni to i pozwoli mi upuścić wierszpuppet.manifest_file =" site.pp ”i wskazywać zamiast tego katalog macierzysty, w którym zostaną wykonane wszystkie pliki * .pp. Jednak usunięcie tego wiersza w Vagrant generuje jedynie skargę na oczekiwany „default.pp” zamiast:

dostawca marionetek: * Brakuje skonfigurowanego manifestu marionetkowego. Podaj ścieżkę do istniejącego manifestu: /some/path/puppet_files/manifests/default.pp

Więc:

  1. Po pierwsze, czy rozumiem „nowy” sposób (bez importu) wywoływania wielu manifestów poprawnie, ponieważ należy wskazać katalog, w którym wszystkie pliki * .pp w nim zawarte zostaną wykonane?
  2. Po drugie, czy Vagrant „dogonił” tę nową zmianę, aby uwzględnić odniesienie do katalogów w powiązaniu z odrzuceniem przez Puppet „importu”?

Aktualizacja: Dzięki Shane'owi problem z numerem 2 (kod Vagrant nie został złapany, aby umożliwić wskazywanie na katalogi manifestów marionetek) został zgłoszony na stronie śledzenia problemów GitHub Vagrant i od tego czasu został załatany: https://github.com/mitchellh/vagrant / Issues / 4169

SeligkeitIstInGott
źródło

Odpowiedzi:

6

Po pierwsze, czy rozumiem „nowy” sposób (bez importu) wywoływania wielu manifestów poprawnie, ponieważ należy wskazać katalog, w którym wszystkie pliki * .pp w nim zawarte zostaną wykonane?

Tak Zobacz tutaj :

Jeśli intensywnie używasz głównego manifestu zamiast polegać na ENC, rozważ zmianę ustawienia manifestu na $ confdir / manifest. Pozwala to podzielić kod najwyższego poziomu na wiele plików, unikając słowa kluczowego importu.

Ponadto, manifesta modulepathtakże stają się przestarzałe na rzecz środowisk katalogowych i zachowania katalogu manifestu, zobacz tutaj :

Po ukończeniu środowisk katalogowych środowiska plików konfiguracyjnych są przestarzałe. Zdefiniowanie bloków środowiska w puppet.conf spowoduje ostrzeżenie o wycofaniu, podobnie jak każde użycie ustawień modlepath, manifest i config_version w puppet.conf.

Jest to dość duża zmiana dla wielu wdrożeń, ale na dłuższą metę powinna być dobrym ulepszeniem.


Po drugie, czy Vagrant „dogonił” tę nową zmianę, aby uwzględnić odniesienie do katalogów w powiązaniu z odrzuceniem przez Puppet „importu”?

Nie to nie ma; z ich dokumentów:

manifest_file (string) - Nazwa pliku manifestu, który będzie służyć jako punkt wejściowy dla uruchomienia Puppet. Ten plik manifestu powinien istnieć w skonfigurowanej ścieżce manifestu

Do użytku z Vagrant, na razie utkniesz w martwym punkcie ostrzeżeń o wycofaniu, co jest niefortunne. Ale import nie jest przeznaczony do usunięcia do 4.x, więc daje Vagrantowi trochę czasu na nadrobienie zaległości.

Shane Madden
źródło
Dobrze wiedzieć, że nie wariuję, ponieważ od ponad godziny staram się dowiedzieć, o co chodzi. Czy programiści Vagrant są świadomi potrzeby tej funkcji, a jeśli nie, istnieje miejsce, w którym można zasugerować takie dodatki?
SeligkeitIstInGott
Wygląda na to, że nie został jeszcze o nie poproszony - patrz tutaj . Upuść problem, aby lepiej go dopasować do nowoczesnej marionetki (lub zrobię to, jeśli nie masz konta github)!
Shane Madden
Myślę, że wszyscy moi współpracownicy ds. Rozwoju mają konta github, ale jeśli je mam, nawet nie wiem, jaki byłby mój login. Nie mam takiej potrzeby, ponieważ jestem informatykiem, a nie programistą. Czy miałbyś coś przeciwko temu?
SeligkeitIstInGott
1
@SeligkeitIstInGott Pewnie, że coś dostanę!
Shane Madden
2
@SeligkeitIstInGott Done - github.com/mitchellh/vagrant/issues/4039
Shane Madden