Nastavitve proxy v Chef med fazama compile in converge
Upoštevajte prevajanje recepta in izvajanje vira, ko spreminjate globalni proxy za eno dejanje remote_file.
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] = previousZačasna vrednost izgine, preden ta običajni vir kar koli prenese:
- Compile: Ruby na najvišji ravni shrani vrednost, nastavi začasni proxy, deklarira
remote_filein obnovi vrednost. - Converge: vir izvede svoje dejanje s konfiguracijo, ki je takrat na voljo.
Stabilen odjemalski proxy z ustreznimi notranjimi izjemami se izogne tej težavi s časovno uskladitvijo. Uporabite dokumentirano sintakso izjem nameščenega odjemalca, namesto da bi predpostavljali pravila shell wildcard. Za samostojen prenos javnega artefakta po dovoljeni javni poti lahko vnos s seznama proxyjev HTTP zagotovi stabilno končno točko HTTP, ko odjemalec Chef nima nastavljenega ali shranjenega računa proxy. Ohranite njegove notranje izjeme; izbira naslova ne spremeni, kdaj ga compile in converge porabita.
Če ena operacija potrebuje posebno pot, postavite spremembo konfiguracije in izvedbo v isti obseg. Vir po meri z ustreznim vedenjem unified-mode je ena možnost, vendar Chef::Config ostane globalen. Obnovite ga, ko prenos ne uspe in ko je datoteka že aktualna. Obvestilo o posodobitvi se ne izvede brezpogojno, kasnejši vir za čiščenje pa se po izjemi morda nikoli ne izvede.
Lastnost lazy source odloži vrednotenje te lastnosti, ne pa okoliške dodelitve Ruby. Izvajanje virov v času compile je ločena podprta izbira, ko prenos spada prav tja; spremeni tudi časovno uskladitev odvisnosti in obvestil. Izberite glede na to, kdaj odjemalec HTTP porabi svojo nastavitev proxy, namesto da bi pričakovali, da bo vrstni red deklaracij zagotovil izolacijo.