Mam zasób w przepisie na szefa kuchni, który chciałbym być opcjonalny. Oznacza to, że gdy przetwarzanie jest uruchomione, jeśli zasób się nie powiedzie, chcę, aby wszystko inne działało dalej. Nadal chciałbym wiedzieć, że oczywiście nie udało się tego zasobu, to po prostu, że nie jest to zasób krytyczny i nic nie zależy od niego, więc wolałbym, żeby reszta biegu była kontynuowana.W jaki sposób uczynić zasoby szefa kuchni opcjonalnymi?
Jestem przyzwyczajony do pracy z Puppetem, w którym musisz jawnie zadeklarować swoje zależności, a zasoby są pomijane tylko wtedy, gdy zależność się nie powiedzie, zamiast jednej awarii, co powoduje, że cała reszta pliku nie działa.
Nie jestem pewien, dlaczego to zamknięcie nie było prawdziwym pytaniem (nawet po przeczytaniu FAQ), ale dodam przykładowy kod ilustrujący to, o co pytam, mam nadzieję, że ktoś inny może głosować, aby ponownie otworzyć lub odpowiedzieć.
Używam szefa kuchni do skonfigurowania środowiska deweloperskiego, a częścią tego jest po prostu klonowanie niektórych repozytoriów git, które mają na miejscu. Nic nie zależy od nich, a od czasu do czasu istnieje prywatne repozytorium, do którego niektórzy twórcy nie mają dostępu. Jeśli nie uda się sklonować, chciałbym, aby inne zasoby nadal były uruchamiane.
Więc dla następujących środków:
["foo", "bar", "baz"].each do |repo|
git repo do
repository "[email protected]/example/#{repo}"
reference "master"
action :sync
depth 1
user 'dev'
group 'dev'
destination "#{node[:src_dir]}/#{repo}"
end
end
Jeśli użytkownik pracuje ten nie ma uprawnień do klonowania foo, chciałbym foo niepowodzenie, ale bar i Baz nadal sklonować. Jak to możliwe?
szybki i brudny opcje: ignore_failure prawda, only_if "zwinięcie http://github.com/repo" – agross
ignore_failure jest to, czego szukałem. curl tak naprawdę nie działa, ponieważ jest to prywatne repo, które próbuję uzyskać, więc polegam na kluczach ssh, aby były dostępne. Ponadto only_if po prostu ominie ten zasób, nie dając mi do zrozumienia, że coś jest nie tak, podczas gdy ignore_failure daje mi dobrą wiadomość w dzienniku: 'STDERR: ERROR: nie znaleziono repozytorium. ignore_failure jest ustawione, kontynuując " – mmrobins