Nastavenia proxy v Chef naprieč fázami compile a converge
Počítajte s kompiláciou receptu a spustením resource, keď meníte globálnu proxy pre jednu akciu 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] = previousDočasná hodnota zmizne skôr, než tento bežný resource čokoľvek stiahne:
- Compile: Ruby na najvyššej úrovni uloží hodnotu, nastaví dočasnú proxy, deklaruje
remote_filea hodnotu obnoví. - Converge: resource vykoná svoju akciu s konfiguráciou dostupnou v tom čase.
Stabilná klientska proxy s vhodnými internými výnimkami predchádza tomuto problému s časovaním. Použite dokumentovanú syntax výnimiek nainštalovaného klienta, namiesto predpokladania pravidiel shell wildcard. Pre nezávislé stiahnutie verejného artefaktu po povolenej verejnej trase môže záznam zo zoznamu HTTP proxy poskytnúť stabilný HTTP endpoint, keď klient Chef nemá nakonfigurovaný ani uchovaný proxy účet. Zachovajte jeho interné výnimky; výber adresy nemení, kedy ju compile a converge spotrebujú.
Ak jedna operácia potrebuje zvláštnu trasu, umiestnite zmenu konfigurácie aj vykonanie do rovnakého rozsahu. Vlastný resource s vhodným správaním unified-mode je jedna možnosť, ale Chef::Config zostáva globálna. Obnovte ju, keď sťahovanie zlyhá a keď je súbor už aktuálny. Oznámenie o aktualizácii sa nespúšťa bezpodmienečne a neskorší čistiaci resource sa po výnimke nemusí nikdy spustiť.
Vlastnosť lazy source odkladá vyhodnotenie tejto vlastnosti, nie okolité priradenia Ruby. Spúšťanie resource v čase compile je samostatná podporovaná voľba, ak práve vtedy sťahovanie patrí; mení aj časovanie závislostí a oznámení. Vyberajte podľa toho, kedy HTTP klient spotrebúva svoje nastavenie proxy, namiesto očakávania, že poradie deklarácií poskytne izoláciu.