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

Geçici değer, bu sıradan kaynak herhangi bir şey indirmeden önce çoktan kaybolmuştur:

  1. Compile: üst düzey Ruby değeri kaydeder, geçici proxy'yi ayarlar, remote_file bildirimini yapar ve değeri geri yükler.
  2. Converge: kaynak, eylemini o anda kullanılabilir olan yapılandırmayla gerçekleştirir.

Uygun iç dışlamalara sahip kararlı bir istemci proxy'si bu zamanlama sorununu önler. Kabuk wildcard kurallarını varsaymak yerine kurulu istemcinin belgelenmiş dışlama sözdizimini kullanın. İzin verilen genel bir rotada genel bir artefaktın bağımsız indirilmesi için, Chef istemcisinin yapılandırılmış veya saklanmış bir proxy hesabı yoksa HTTP proxy listesindeki bir giriş kararlı HTTP uç noktasını sağlayabilir. İç dışlamalarını koruyun; bir adres seçmek compile ve converge'in onu ne zaman tükettiğini değiştirmez.

Tek bir işlem özel bir rota gerektiriyorsa, yapılandırma değişikliğini ve yürütmeyi aynı kapsama koyun. Uygun unified-mode davranışına sahip özel bir kaynak bir seçenektir, ancak Chef::Config genel kalır. İndirme başarısız olduğunda ve dosya zaten güncel olduğunda onu geri yükleyin. Güncelleme bildirimi koşulsuz çalışmaz ve bir istisnadan sonra daha sonraki bir temizleme kaynağı hiç çalışmayabilir.

Bir lazy source özelliği, o özelliğin değerlendirmesini geciktirir, çevresindeki Ruby atamalarını değil. İndirme tam o ana aitse, compile zamanında kaynak yürütme ayrı olarak desteklenen bir seçenektir; bağımlılıkların ve bildirimlerin zamanlamasını da değiştirir. Bildirim sırasının yalıtım sağlamasını beklemek yerine, HTTP istemcisinin proxy ayarını ne zaman tükettiğine göre seçin.

İlgili makaleler