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

Den mellombelse verdien er borte før denne vanlege ressursen lastar ned noko som helst:

  1. Compile: Ruby på øvste nivå lagrar verdien, set den mellombelse proxyen, erklærer remote_file og gjenopprettar verdien.
  2. Converge: ressursen utfører handlinga si med konfigurasjonen som er tilgjengeleg då.

Ein stabil klientproxy med høvelege interne unntak unngår dette timingproblemet. Bruk den dokumenterte unntakssyntaksen til den installerte klienten i staden for å anta shell-wildcardreglar. For ei uavhengig nedlasting av eit offentleg artefakt på ei tillaten offentleg rute kan ei oppføring frå ei HTTP-proxyliste gje den stabile HTTP-endepunktet når Chef-klienten ikkje har ein konfigurert eller halden proxykonto. Hald på dei interne unntaka; val av adresse endrar ikkje når compile og converge brukar han.

Viss éin operasjon treng ei særskild rute, legg konfigurasjonsendringa og køyringa i same omfang. Ein eigendefinert ressurs med høveleg unified-mode-åtferd er eitt alternativ, men Chef::Config blir verande global. Gjenopprett han når nedlastinga mislukkast og når fila allereie er oppdatert. Eit oppdateringsvarsel køyrer ikkje vilkårslaust, og ein seinare oppryddingsressurs køyrer kanskje aldri etter eit unntak.

Ein lazy source-eigenskap utset vurderinga av den eigenskapen, ikkje Ruby-tildelingane rundt. Køyring av ressursar på compile-tid er eit eige støtta val når det er då nedlastinga høyrer heime; det endrar òg timingen for avhengnader og varsel. Vel etter når HTTP-klienten brukar proxyinnstillinga si, i staden for å vente at deklarasjonsrekkjefølgja gir isolasjon.

Relaterte artiklar