Chef proxy postavke kroz faze compile i converge
Uzmite u obzir kompajliranje recepta i izvršavanje resursa kada menjate globalni proxy za jednu radnju 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] = previousPrivremena vrednost nestaje pre nego što ovaj obični resurs išta preuzme:
- Compile: Ruby na najvišem nivou čuva vrednost, postavlja privremeni proxy, deklariše
remote_filei vraća vrednost. - Converge: resurs izvršava svoju radnju koristeći konfiguraciju dostupnu tada.
Stabilan klijentski proxy sa odgovarajućim internim izuzecima izbegava ovaj problem sa vremenom. Koristite dokumentovanu sintaksu izuzetaka instaliranog klijenta umesto da pretpostavljate pravila shell wildcarda. Za nezavisno preuzimanje javnog artefakta na dozvoljenoj javnoj ruti, unos sa liste HTTP proxyja može obezbediti stabilnu HTTP završnu tačku kada Chef klijent nema konfigurisan ni zadržan proxy nalog. Zadržite njegove interne izuzetke; izbor adrese ne menja kada ga compile i converge troše.
Ako jedna operacija zahteva posebnu rutu, stavite promenu konfiguracije i izvršavanje u isti obim. Prilagođeni resurs sa odgovarajućim ponašanjem unified-mode je jedna opcija, ali Chef::Config ostaje globalan. Vratite ga kada preuzimanje ne uspe i kada je datoteka već ažurna. Obaveštenje o ažuriranju se ne pokreće bezuslovno, a kasniji resurs za čišćenje možda se nikada neće pokrenuti nakon izuzetka.
Svojstvo lazy source odlaže procenu tog svojstva, ne okolne Ruby dodele. Izvršavanje resursa u vreme compile je odvojen podržan izbor kada preuzimanje tada i pripada; ono takođe menja vreme zavisnosti i obaveštenja. Birajte prema tome kada HTTP klijent troši svoje proxy podešavanje, umesto da očekujete da će redosled deklaracija pružiti izolaciju.