Proxy-innstillinger i Chef gjennom compile- og converge-fasene
Ta hensyn til oppskriftskompilering og kjøring av ressurser når du endrer en global proxy for én enkelt remote_file-handling.
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] = previousDen midlertidige verdien er allerede borte før denne helt vanlige ressursen henter noe:
- Compile: Ruby på toppnivå tar vare på verdien, setter den midlertidige proxyen, erklærer
remote_fileog legger verdien tilbake. - Converge: ressursen utfører handlingen med den konfigurasjonen som finnes på det tidspunktet.
En stabil klientproxy med egnede interne unntak unngår dette tidsproblemet. Bruk den dokumenterte unntakssyntaksen til den installerte klienten framfor å forutsette shell-wildcardregler. For en selvstendig nedlasting av et offentlig artefakt på en tillatt offentlig rute kan en oppføring fra en liste over HTTP-proxyer skaffe det stabile HTTP-endepunktet når Chef-klienten ikke har noen oppsatt eller lagret proxykonto. Behold de interne unntakene; valget av adresse endrer ikke når compile og converge bruker den.
Dersom én operasjon trenger en spesiell rute, bør konfigurasjonsendringen og kjøringen ligge innenfor samme omfang. En tilpasset ressurs med riktig unified-mode-oppførsel er ett alternativ, men Chef::Config er fortsatt global. Sett den tilbake når nedlastingen feiler og når filen allerede er oppdatert. Et oppdateringsvarsel kjøres ikke uten videre, og en senere oppryddingsressurs kjøres kanskje aldri etter et unntak.
En lazy source-egenskap utsetter vurderingen av nettopp den egenskapen, ikke Ruby-tildelingene rundt. Å kjøre ressurser på compile-tid er et eget støttet alternativ når nedlastingen hører hjemme der; det endrer også tidspunktet for avhengigheter og varsler. Velg ut fra når HTTP-klienten bruker proxyinnstillingen sin, i stedet for å regne med at deklarasjonsrekkefølgen gir isolasjon.