Proxyindstillinger i Chef på tværs af compile- og converge-faserne
Tag højde for opskriftskompilering og ressourcekørsel, når du ændrer en global proxy for én 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 værdi er væk, før denne almindelige ressource henter noget som helst:
- Compile: Ruby på øverste niveau gemmer værdien, sætter den midlertidige proxy, erklærer
remote_fileog gendanner værdien. - Converge: ressourcen udfører sin handling med den konfiguration, der er tilgængelig på det tidspunkt.
En stabil klientproxy med passende interne undtagelser undgår dette timingproblem. Brug den installerede klients dokumenterede undtagelsessyntaks i stedet for at antage shell-wildcardregler. Til en uafhængig hentning af et offentligt artefakt på en tilladt offentlig rute kan en post fra en HTTP-proxyliste levere det stabile HTTP-endpoint, når Chef-klienten ikke har en konfigureret eller bevaret proxykonto. Behold dens interne undtagelser; valg af adresse ændrer ikke, hvornår compile og converge forbruger den.
Hvis én handling kræver en særlig rute, skal du lægge dens konfigurationsændring og udførelse i samme omfang. En brugerdefineret ressource med passende unified-mode-adfærd er én mulighed, men Chef::Config forbliver global. Gendan den, når hentningen mislykkes, og når filen allerede er opdateret. En opdateringsnotifikation kører ikke ubetinget, og en senere oprydningsressource kører måske aldrig efter en undtagelse.
En lazy source-egenskab udskyder evalueringen af den egenskab, ikke de omkringliggende Ruby-tildelinger. Kørsel af ressourcer på compile-tidspunktet er et separat understøttet valg, når det er der, hentningen hører til; det ændrer også afhængigheds- og notifikationstiming. Vælg efter, hvornår HTTP-klienten forbruger sin proxyindstilling, i stedet for at forvente, at deklarationsrækkefølgen giver isolering.