Próbuję uruchomić pojedynczy moduł, taki jak ten:
puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'
Jednak dostaję tego rodzaju błąd wskazujący, że ścieżka nie jest ustawiona
Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.
Nie chcę jawnie określać ścieżki w każdej takiej lokalizacji i działa dobrze, gdy jest uruchamiana jako część pełnego cyklu marionetkowego. Jak mogę określić ścieżkę podczas uruchamiania pojedynczego modułu?
Odpowiedzi:
Polecenia w
Exec
zasobie albo muszą być w pełni kwalifikowane (tj./usr/bin/test
Zamiasttest
), albo musi zostać ustawionypath
atrybut tegoExec
zasobu.Jeśli możesz zmodyfikować manifest (y) Marionetek, możesz po prostu dodać następującą definicję ustawiania domyślnego
path
atrybutu dla wszystkichExec
zasobów/bin
:Jako (mniej lub bardziej) nieprzyzwoite obejście można również po prostu ustawić domyślne
path
dla dowolnegoExec
zasobu w wierszu poleceń:Wskaźniki dokumentacji:
źródło
To ... nie powinno działać w ramach pełnego biegu. Potrzebuje pełnej ścieżki do pliku wykonywalnego w
unless
poleceniu. Może masz ścieżkę ustawioną w pliku globalnym, który jest częścią twoich pełnych uruchomień?unless => '/usr/bin/[ -e "${logfile}" ]'
Zamiast tego spróbuj .źródło
Zgadzam się z Shane, że domyślna ścieżka jest prawdopodobnie ustawiona w manifeście o globalnym zasięgu. Możesz zrobić to samo, ale nie możesz przekazać go jako argumentu, więc użyj stdin:
lub wstaw Exec i dołącz wiersze do,
example.pp
a następnie użyjpuppet apply -v ... example.pp
.źródło
Musisz użyć w pełni kwalifikowanej ścieżki.
Na przykład:
lub:
źródło