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

Pagaidu vērtība jau ir pazudusi, pirms šis parastais resurss kaut ko lejupielādē:

  1. Compile: augšējā līmeņa Ruby saglabā vērtību, iestata pagaidu starpniekserveri, deklarē remote_file un atjauno vērtību.
  2. Converge: resurss veic savu darbību ar konfigurāciju, kas tajā brīdī ir pieejama.

Stabils klienta starpniekserveris ar atbilstošiem iekšējiem izņēmumiem izvairās no šī laika problēmas. Izmantojiet instalētā klienta dokumentēto izņēmumu sintaksi, nevis pieņemiet shell wildcard noteikumus. Lai neatkarīgi lejupielādētu publisku artefaktu atļautā publiskā maršrutā, ieraksts no HTTP starpniekserveru saraksta var nodrošināt stabilo HTTP galapunktu, ja Chef klientam nav konfigurēta vai saglabāta starpniekservera konta. Saglabājiet tā iekšējos izņēmumus; adreses izvēle nemaina to, kad compile un converge to patērē.

Ja vienai operācijai nepieciešams īpašs maršruts, ievietojiet tās konfigurācijas izmaiņas un izpildi vienā tvērumā. Pielāgots resurss ar atbilstošu unified-mode uzvedību ir viens variants, taču Chef::Config paliek globāls. Atjaunojiet to, kad lejupielāde neizdodas un kad fails jau ir aktuāls. Atjauninājuma paziņojums neizpildās bez nosacījumiem, un vēlāks tīrīšanas resursē pēc izņēmuma var nekad neizpildīties.

Lazy source rekvizīts atliek šī rekvizīta novērtēšanu, nevis apkārtējos Ruby piešķīrumus. Resursu izpilde compile laikā ir atsevišķa atbalstīta izvēle, kad lejupielāde pieder tieši tam laikam; tā arī maina atkarību un paziņojumu laiku. Izvēlieties pēc tā, kad HTTP klients patērē savu starpniekservera iestatījumu, nevis gaidiet, ka deklarāciju secība nodrošinās izolāciju.

Saistītie raksti