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

Nilai sementara sudah hilang sebelum resource biasa ini mengunduh apa pun:

  1. Compile: Ruby tingkat atas menyimpan nilai, menetapkan proxy sementara, mendeklarasikan remote_file lalu memulihkan nilai.
  2. Converge: resource menjalankan aksinya dengan konfigurasi yang tersedia saat itu.

Proxy klien yang stabil dengan pengecualian internal yang sesuai menghindari masalah waktu ini. Gunakan sintaks pengecualian terdokumentasi milik klien yang terpasang alih-alih mengasumsikan aturan wildcard shell. Untuk unduhan artefak publik yang independen pada rute publik yang diizinkan, entri dari daftar proxy HTTP dapat menyediakan endpoint HTTP stabil bila klien Chef tidak memiliki akun proxy yang dikonfigurasi atau disimpan. Pertahankan pengecualian internalnya; memilih alamat tidak mengubah kapan compile dan converge mengonsumsinya.

Jika satu operasi memerlukan rute khusus, letakkan perubahan konfigurasi dan eksekusinya dalam cakupan yang sama. Resource khusus dengan perilaku unified-mode yang tepat adalah salah satu opsi, tetapi Chef::Config tetap global. Pulihkan saat unduhan gagal dan saat berkas sudah mutakhir. Notifikasi pembaruan tidak berjalan tanpa syarat, dan resource pembersihan berikutnya mungkin tidak pernah berjalan setelah pengecualian.

Properti lazy source menunda evaluasi properti itu, bukan penetapan Ruby di sekitarnya. Eksekusi resource pada waktu compile adalah pilihan terdukung yang terpisah bila saat itulah unduhan seharusnya terjadi; itu juga mengubah waktu dependensi dan notifikasi. Pilihlah berdasarkan kapan klien HTTP mengonsumsi pengaturan proxinya, bukan mengharapkan urutan deklarasi memberi isolasi.

Artikel terkait