Nastavení proxy v Chef napříč fázemi compile a converge
Počítejte s kompilací receptu i spuštěním resource, když měníte globální proxy pro jednu akci 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 zmizí dřív, než tento běžný resource cokoli stáhne:
- Compile: Ruby na nejvyšší úrovni uloží hodnotu, nastaví dočasnou proxy, deklaruje
remote_filea hodnotu obnoví. - Converge: resource provede svou akci s konfigurací dostupnou v tu chvíli.
Stabilní klientská proxy s vhodnými interními výjimkami tomuto problému s časováním předchází. Použijte dokumentovanou syntaxi výjimek nainstalovaného klienta, místo abyste předpokládali pravidla shell wildcard. Pro nezávislé stažení veřejného artefaktu po povolené veřejné trase může záznam ze seznamu HTTP proxy poskytnout stabilní HTTP endpoint, když klient Chef nemá nakonfigurovaný ani uchovaný proxy účet. Zachovejte jeho interní výjimky; volba adresy nemění, kdy ji compile a converge spotřebují.
Pokud jedna operace potřebuje zvláštní trasu, umístěte změnu konfigurace i provedení do stejného rozsahu. Vlastní resource s odpovídajícím chováním unified-mode je jedna možnost, ale Chef::Config zůstává globální. Obnovte ji, když stažení selže a když je soubor už aktuální. Oznámení o aktualizaci se nespouští bezpodmínečně a pozdější úklidový resource se po výjimce nemusí nikdy spustit.
Vlastnost lazy source odkládá vyhodnocení této vlastnosti, nikoli okolní přiřazení v Ruby. Spuštění resource v čase compile je samostatná podporovaná volba, pokud právě tehdy stažení patří; mění také časování závislostí a oznámení. Vybírejte podle toho, kdy HTTP klient spotřebovává své nastavení proxy, místo abyste očekávali, že pořadí deklarací poskytne izolaci.