Ustawienia proxy w Chef między fazami compile i converge
Uwzględnij kompilację przepisu i wykonanie zasobu, gdy zmieniasz globalne proxy dla jednej akcji remote_file.
previous = Chef::Config[:http_proxy]
Chef::Config[:http_proxy] = 'http://proxy.example.net:8080'
remote_file '/var/tmp/package.zip' do
source 'https://downloads.example.net/package.zip'
end
Chef::Config[:http_proxy] = previousWartość tymczasowa znika, zanim ten zwykły zasób cokolwiek pobierze:
- Compile: Ruby najwyższego poziomu zapisuje wartość, ustawia tymczasowe proxy, deklaruje
remote_filei przywraca wartość. - Converge: zasób wykonuje swoją akcję z konfiguracją dostępną wtedy.
Stabilne proxy klienta z odpowiednimi wykluczeniami wewnętrznymi pozwala uniknąć tego problemu z czasowaniem. Użyj udokumentowanej składni wykluczeń zainstalowanego klienta, zamiast zakładać reguły wildcard powłoki. Do niezależnego pobrania publicznego artefaktu dozwoloną trasą publiczną wpis z listy proxy HTTP może zapewnić stabilny punkt końcowy HTTP, gdy klient Chef nie ma skonfigurowanego ani zachowanego konta proxy. Zachowaj jego wykluczenia wewnętrzne; wybór adresu nie zmienia tego, kiedy compile i converge go zużywają.
Jeśli jedna operacja wymaga specjalnej trasy, umieść jej zmianę konfiguracji i wykonanie w tym samym zakresie. Zasób niestandardowy z odpowiednim zachowaniem unified-mode jest jedną z opcji, ale Chef::Config pozostaje globalne. Przywróć je, gdy pobieranie się nie powiedzie i gdy plik jest już aktualny. Powiadomienie o aktualizacji nie uruchamia się bezwarunkowo, a późniejszy zasób czyszczący może nigdy nie uruchomić się po wyjątku.
Właściwość lazy source opóźnia ocenę tej właściwości, a nie otaczające przypisania Ruby. Wykonywanie zasobów w czasie compile to osobny obsługiwany wybór, gdy właśnie wtedy należy wykonać pobieranie; zmienia też harmonogram zależności i powiadomień. Wybieraj według tego, kiedy klient HTTP zużywa swoje ustawienie proxy, zamiast oczekiwać, że kolejność deklaracji zapewni izolację.