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

Временната стойност е изчезнала, преди този обикновен ресурс да изтегли каквото и да е:

  1. Compile: Ruby на горно ниво запазва стойността, задава временния прокси, декларира remote_file и възстановява стойността.
  2. Converge: ресурсът изпълнява действието си с конфигурацията, налична по това време.

Стабилен клиентски прокси с подходящи вътрешни изключения избягва този проблем с времето. Използвайте документирания синтаксис за изключения на инсталирания клиент, вместо да предполагате правила за wildcard на обвивката. За независимо изтегляне на публичен артефакт по разрешен публичен маршрут запис от списък с HTTP прокси може да осигури стабилната HTTP крайна точка, когато клиентът Chef няма конфигуриран или запазен прокси акаунт. Запазете вътрешните му изключения; изборът на адрес не променя кога compile и converge го консумират.

Ако една операция се нуждае от специален маршрут, поставете промяната на конфигурацията и изпълнението в един и същ обхват. Персонализиран ресурс с подходящо поведение unified-mode е една възможност, но Chef::Config остава глобален. Възстановявайте го, когато изтеглянето се провали и когато файлът вече е актуален. Известието за актуализация не се изпълнява безусловно, а по-късен ресурс за почистване може никога да не се изпълни след изключение.

Свойството lazy source отлага оценката на това свойство, а не околните присвоявания на Ruby. Изпълнението на ресурс по време на compile е отделен поддържан избор, когато тогава е моментът за изтеглянето; то също променя времето на зависимостите и известията. Избирайте според това кога HTTP клиентът консумира прокси настройката си, вместо да очаквате редът на декларациите да даде изолация.

Подобни статии