Pengaturan proxy Chef di seluruh fase compile dan converge
Perhitungkan kompilasi resep dan eksekusi resource saat mengubah proxy global untuk satu aksi 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] = previousNilai sementara sudah hilang sebelum resource biasa ini mengunduh apa pun:
- Compile: Ruby tingkat atas menyimpan nilai, menetapkan proxy sementara, mendeklarasikan
remote_filelalu memulihkan nilai. - 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.