Chefi puhverserveri seaded compile- ja converge-faasis
Arvestage retsepti koostamise ja ressursi täitmisega, kui muudate ühe remote_file-toimingu jaoks globaalset puhverserverit.
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] = previousAjutine väärtus on kadunud enne, kui see tavaline ressurss midagi alla laadib:
- Compile: ülatasandi Ruby salvestab väärtuse, seab ajutise puhverserveri, deklareerib
remote_fileja taastab väärtuse. - Converge: ressurss sooritab oma toimingu tol hetkel saadaoleva konfiguratsiooniga.
Õigete sisemiste eranditega stabiilne kliendi puhverserver väldib seda ajastusprobleemi. Kasutage paigaldatud kliendi dokumenteeritud erandite süntaksit, mitte ärge eeldage shelli metamärkide reegleid. Lubatud avalikul marsruudil avaliku artefakti sõltumatuks allalaadimiseks võib HTTP puhverserverite loendi kirje pakkuda stabiilset HTTP-lõpp-punkti, kui Chef kliendil pole konfigureeritud ega säilitatud puhverserveri kontot. Säilitage selle sisemised erandid; aadressi valimine ei muuda seda, millal compile ja converge seda tarbivad.
Kui üks toiming vajab erimarsruuti, pange selle konfiguratsioonimuudatus ja täitmine samasse ulatusse. Sobiva unified-mode-käitumisega kohandatud ressurss on üks võimalus, kuid Chef::Config jääb globaalseks. Taastage see, kui allalaadimine ebaõnnestub ja kui fail on juba ajakohane. Värskendusteade ei käivitu tingimusteta ning hilisem koristusressurss ei pruugi pärast erandit kunagi käivituda.
Lazy source’i atribuut lükkab edasi selle atribuudi hindamise, mitte ümbritsevad Ruby-omistused. Resursside täitmine compile-ajal on eraldi toetatud valik, kui allalaadimine just siis aset leiab; see muudab ka sõltuvuste ja teavituste ajastust. Valige selle järgi, millal HTTP klient oma puhverserveri seadet tarbib, mitte ärge lootke, et deklaratsioonide järjekord annab isolatsiooni.