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

Laikinoji reikšmė jau dingusi prieš šiam paprastam ištekliui ką nors atsisiunčiant:

  1. Compile: viršutinio lygio Ruby išsaugo reikšmę, nustato laikiną proxy, deklaruoja remote_file ir atkuria reikšmę.
  2. Converge: išteklius atlieka savo veiksmą su tuo metu prieinama konfigūracija.

Stabilus kliento proxy su tinkamomis vidinėmis išimtimis išvengia šios laiko problemos. Naudokite įdiegto kliento dokumentuotą išimčių sintaksę, o ne manykite shell wildcard taisykles. Jei norite savarankiškai atsisiųsti viešą artefaktą leidžiamu viešu maršrutu, įrašas iš HTTP proxy sąrašo gali suteikti stabilų HTTP galinį tašką, kai Chef klientas neturi sukonfigūruotos ar išsaugotos proxy paskyros. Išsaugokite jo vidines išimtis; adreso pasirinkimas nekeičia, kada compile ir converge jį naudoja.

Jei vienai operacijai reikia specialaus maršruto, jos konfigūracijos pakeitimą ir vykdymą laikykite toje pačioje apimtyje. Tinkamo unified-mode elgesio pasirinktinis išteklius yra viena galimybė, bet Chef::Config lieka globalus. Atkurkite jį, kai atsisiuntimas nepavyksta ir kai failas jau atnaujintas. Atnaujinimo pranešimas nevykdomas besąlygiškai, o vėlesnis valymo išteklius po išimties gali niekada neįvykti.

Lazy source savybė atideda tos savybės vertinimą, o ne aplinkinius Ruby priskyrimus. Išteklių vykdymas compile metu yra atskiras palaikomas pasirinkimas, kai atsisiuntimas priklauso būtent tam laikui; jis taip pat keičia priklausomybių ir pranešimų laiką. Rinkitės pagal tai, kada HTTP klientas naudoja savo proxy nustatymą, o ne tikėdamiesi, kad deklaracijų tvarka suteiks izoliaciją.

Susiję straipsniai