Chef-proxyinstellingen over de compile- en converge-fasen
Houd rekening met het compileren van recepten en het uitvoeren van resources wanneer je een globale proxy wijzigt voor één remote_file-actie.
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] = previousDe tijdelijke waarde is al verdwenen voordat deze gewone resource iets downloadt:
- Compile: Ruby op het hoogste niveau bewaart de waarde, stelt de tijdelijke proxy in, declareert
remote_fileen herstelt de waarde. - Converge: de resource voert zijn actie uit met de configuratie die dan beschikbaar is.
Een stabiele clientproxy met passende interne uitsluitingen vermijdt dit timingprobleem. Gebruik de gedocumenteerde uitsluitingssyntax van de geïnstalleerde client in plaats van shell-wildcardregels aan te nemen. Voor een onafhankelijke download van een openbaar artefact op een toegestane openbare route kan een vermelding uit een HTTP-proxylijst het stabiele HTTP-eindpunt leveren wanneer de Chef-client geen geconfigureerd of bewaard proxyaccount heeft. Behoud de interne uitsluitingen; het kiezen van een adres verandert niet wanneer compile en converge het gebruiken.
Als één bewerking een speciale route nodig heeft, plaats dan de configuratiewijziging en de uitvoering in dezelfde scope. Een aangepaste resource met passend unified-mode-gedrag is één optie, maar Chef::Config blijft globaal. Herstel het wanneer de download mislukt en wanneer het bestand al actueel is. Een updatemelding wordt niet onvoorwaardelijk uitgevoerd, en een latere opschoningsresource wordt na een uitzondering mogelijk nooit uitgevoerd.
Een lazy source-eigenschap stelt de evaluatie van die eigenschap uit, niet de omringende Ruby-toewijzingen. Resources uitvoeren tijdens compile is een apart ondersteunde keuze wanneer de download daar thuishoort; het verandert ook de timing van afhankelijkheden en meldingen. Kies op basis van wanneer de HTTP-client zijn proxyinstelling gebruikt, in plaats van te verwachten dat de declaratievolgorde isolatie biedt.