Ajustes de proxy de Chef entre las fases compile y converge
Tenga en cuenta la compilación de la receta y la ejecución del recurso al cambiar un proxy global para una acción 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] = previousEl valor temporal ya no está antes de que este recurso corriente descargue nada:
- Compile: Ruby de nivel superior guarda el valor, establece el proxy temporal, declara
remote_filey restaura el valor. - Converge: el recurso realiza su acción con la configuración disponible en ese momento.
Un proxy de cliente estable con las exclusiones internas adecuadas evita este problema de temporización. Use la sintaxis de exclusiones documentada del cliente instalado en lugar de suponer reglas de comodines del shell. Para una descarga independiente de un artefacto público por una ruta pública permitida, una entrada de la lista de proxies HTTP puede aportar el punto de conexión HTTP estable cuando el cliente de Chef no tiene ninguna cuenta de proxy configurada ni retenida. Conserve sus exclusiones internas; elegir una dirección no cambia cuándo la consumen compile y converge.
Si una operación necesita una ruta especial, ponga su cambio de configuración y su ejecución en el mismo ámbito. Un recurso personalizado con el comportamiento unified-mode adecuado es una opción, pero Chef::Config sigue siendo global. Restáurelo cuando la descarga falle y cuando el archivo ya esté actualizado. Una notificación de actualización no se ejecuta incondicionalmente, y un recurso de limpieza posterior puede no ejecutarse nunca tras una excepción.
Una propiedad lazy source aplaza la evaluación de esa propiedad, no las asignaciones de Ruby que la rodean. La ejecución de recursos en tiempo de compile es una opción admitida aparte cuando es entonces cuando corresponde la descarga; también cambia la temporización de dependencias y notificaciones. Elija según cuándo consuma el cliente HTTP su ajuste de proxy, en lugar de esperar que el orden de declaración aporte aislamiento.