Impostazioni proxy di Chef tra le fasi compile e converge
Tieni conto della compilazione della ricetta e dell’esecuzione della risorsa quando cambi un proxy globale per un’azione 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] = previousIl valore temporaneo è già sparito prima che questa normale risorsa scarichi qualcosa:
- Compile: il Ruby di primo livello salva il valore, imposta il proxy temporaneo, dichiara
remote_filee ripristina il valore. - Converge: la risorsa esegue la sua azione con la configurazione disponibile in quel momento.
Un proxy client stabile con adeguate esclusioni interne evita questo problema di temporizzazione. Usa la sintassi di esclusione documentata del client installato invece di dare per scontate le regole wildcard della shell. Per un download indipendente di un artefatto pubblico su una rotta pubblica consentita, una voce di un elenco di proxy HTTP può fornire l’endpoint HTTP stabile quando il client Chef non ha alcun account proxy configurato o conservato. Conserva le sue esclusioni interne; scegliere un indirizzo non cambia quando compile e converge lo consumano.
Se un’operazione richiede una rotta speciale, metti la sua modifica di configurazione e l’esecuzione nello stesso ambito. Una risorsa personalizzata con un comportamento unified-mode adeguato è un’opzione, ma Chef::Config resta globale. Ripristinalo quando il download fallisce e quando il file è già aggiornato. Una notifica di aggiornamento non viene eseguita incondizionatamente, e una risorsa di pulizia successiva potrebbe non essere mai eseguita dopo un’eccezione.
Una proprietà lazy source ritarda la valutazione di quella proprietà, non le assegnazioni Ruby circostanti. L’esecuzione delle risorse al momento della compilazione è una scelta supportata a parte quando è allora che il download va fatto; cambia anche la temporizzazione di dipendenze e notifiche. Scegli in base a quando il client HTTP consuma la sua impostazione proxy, invece di aspettarti che l’ordine di dichiarazione offra isolamento.