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] = previous

Dočasná hodnota zmizne skôr, než tento bežný resource čokoľvek stiahne:

  1. Compile: Ruby na najvyššej úrovni uloží hodnotu, nastaví dočasnú proxy, deklaruje remote_file a hodnotu obnoví.
  2. 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.

Súvisiace články