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

Valoarea temporară a dispărut înainte ca această resursă obișnuită să descarce ceva:

  1. Compile: Ruby de nivel superior salvează valoarea, setează proxy-ul temporar, declară remote_file și restaurează valoarea.
  2. Converge: resursa își execută acțiunea cu configurația disponibilă atunci.

Un proxy de client stabil cu excluderi interne potrivite evită această problemă de sincronizare. Folosiți sintaxa de excludere documentată a clientului instalat în loc să presupuneți reguli wildcard ale shell-ului. Pentru o descărcare independentă a unui artefact public pe o rută publică permisă, o intrare din lista de proxy HTTP poate furniza punctul final HTTP stabil atunci când clientul Chef nu are niciun cont de proxy configurat sau păstrat. Păstrați excluderile interne; alegerea unei adrese nu schimbă momentul în care compile și converge îl consumă.

Dacă o operație are nevoie de o rută specială, puneți modificarea configurației și execuția în același domeniu. O resursă personalizată cu comportament unified-mode adecvat este o opțiune, dar Chef::Config rămâne global. Restabiliți-l când descărcarea eșuează și când fișierul este deja actualizat. O notificare de actualizare nu rulează necondiționat, iar o resursă de curățare ulterioară poate să nu ruleze niciodată după o excepție.

O proprietate lazy source amână evaluarea acelei proprietăți, nu atribuirile Ruby din jur. Execuția resurselor în timpul compile este o opțiune acceptată separat atunci când descărcarea aparține acelui moment; schimbă și sincronizarea dependențelor și notificărilor. Alegeți în funcție de momentul în care clientul HTTP își consumă setarea de proxy, în loc să vă așteptați ca ordinea declarațiilor să ofere izolare.

Articole similare