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

El valor temporal ja no hi és abans que aquest recurs ordinari descarregui res:

  1. Compile: el Ruby de nivell superior desa el valor, estableix el proxy temporal, declara remote_file i restaura el valor.
  2. Converge: el recurs executa la seva acció amb la configuració disponible en aquell moment.

Un proxy de client estable amb les exclusions internes adequades evita aquest problema de temporització. Feu servir la sintaxi d’exclusions documentada del client instal·lat en lloc de suposar regles de comodins del shell. Per a una descàrrega independent d’un artefacte públic per una ruta pública permesa, una entrada de la llista de proxies HTTP pot proporcionar el punt final HTTP estable quan el client de Chef no té cap compte de proxy configurat ni conservat. Mantingueu-ne les exclusions internes; triar una adreça no canvia quan compile i converge la consumeixen.

Si una operació necessita una ruta especial, poseu el canvi de configuració i l’execució en el mateix abast. Un recurs personalitzat amb un comportament unified-mode adequat és una opció, però Chef::Config continua sent global. Restaureu-lo quan la descàrrega falli i quan el fitxer ja estigui actualitzat. Una notificació d’actualització no s’executa incondicionalment, i un recurs de neteja posterior pot no executar-se mai després d’una excepció.

Una propietat lazy source ajorna l’avaluació d’aquesta propietat, no les assignacions de Ruby del voltant. L’execució de recursos en temps de compile és una opció suportada a part quan és llavors quan pertoca la descàrrega; també canvia la temporització de dependències i notificacions. Trieu segons quan el client HTTP consumeix el seu paràmetre de proxy, en lloc d’esperar que l’ordre de declaració proporcioni aïllament.

Articles relacionats