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: ينفّذ المورد إجراءه بالإعدادات المتاحة حينها.

الوكيل العميل الثابت مع استثناءات داخلية مناسبة يتجنب مشكلة التوقيت هذه. استخدم صيغة الاستثناء الموثّقة لدى العميل المثبّت بدلاً من افتراض قواعد أحرف البدل في الصدفة. ولتنزيل مستقل لأحد الأصول العامة عبر مسار عام مسموح، يمكن لمدخل من قائمة وكلاء HTTP أن يوفّر نقطة نهاية HTTP ثابتة حين لا يملك عميل Chef حساب وكيل مضبوطًا أو محفوظًا. أبقِ استثناءاته الداخلية؛ فاختيار عنوان لا يغيّر متى يستهلكه compile وconverge.

إذا احتاجت عملية واحدة مسارًا خاصًا، فضع تغيير إعدادها وتنفيذها في النطاق نفسه. المورد المخصص بسلوك unified-mode مناسب خيار واحد، لكن Chef::Config يبقى عامًّا. أعده عندما يفشل التنزيل وعندما يكون الملف محدَّثًا بالفعل. إشعار التحديث لا يعمل دون شرط، وقد لا يعمل مورد تنظيف لاحق أبدًا بعد استثناء.

خاصية المصدر الكسولة تؤجل تقييم تلك الخاصية، لا إسنادات Ruby المحيطة بها. تنفيذ المورد في زمن compile خيار مدعوم منفصل عندما يكون ذلك هو وقت التنزيل؛ وهو يغيّر أيضًا توقيت الاعتماديات والإشعارات. اختر بحسب متى يستهلك عميل HTTP إعداد الوكيل، بدلًا من توقع أن يوفّر ترتيب الإعلان عزلة.

مقالات ذات صلة