Usiłuję napisać funkcję w marionetce, która wykona polecenie, fail
jeśli podana ścieżka do katalogu nie istnieje.
if File["/some/path"]
zawsze zwraca true i if defined(File["/some/path"])
zwraca true tylko wtedy, gdy zasób jest zdefiniowany w marionetce, niezależnie od tego, czy faktycznie istnieje.
Czy można to zrobić za pomocą prostego if
stwierdzenia?
Dzięki
Odpowiedzi:
Obejście tego problemu: użyj tylko if na „teście” exec i wymagaj go w akcji, którą chcesz wykonać:
źródło
Ja również miałem trudności z wymyśleniem, jak uniemożliwić uruchomienie modułu, jeśli katalog nie był obecny. To, co znalazłem, działało dla mnie.
Dodanie ścieżki było tym, co naprawdę zrobiło dla mnie lewę. Z jakiegoś powodu, nawet jeśli dodałem ścieżkę do polecenia testowego, tak jakby
/bin/test
nie działało to poprawnie.Mam nadzieję, że to pomoże innym, którzy mogą mieć ten sam problem.
źródło
Możesz również użyć do tego wbudowanej funkcji find_file () ... zwraca undef, gdy plik / ścieżka nie istnieje, i łańcuch, jeśli istnieje.
https://puppet.com/docs/puppet/5.5/function.html#findfile
źródło