compile और converge चरणों में Chef प्रॉक्सी सेटिंग्स
एक 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] = previousयह सामान्य संसाधन कुछ भी डाउनलोड करने से पहले ही अस्थायी मान गायब हो जाता है:
- Compile: शीर्ष-स्तरीय Ruby मान सहेजता है, अस्थायी प्रॉक्सी सेट करता है,
remote_fileघोषित करता है और मान पुनर्स्थापित करता है। - Converge: संसाधन उस समय उपलब्ध कॉन्फ़िगरेशन के साथ अपनी क्रिया करता है।
उपयुक्त आंतरिक अपवर्जनों वाला स्थिर क्लाइंट प्रॉक्सी इस समय-संबंधी समस्या से बचाता है। shell wildcard नियम मानने के बजाय इंस्टॉल किए गए क्लाइंट के प्रलेखित अपवर्जन सिंटैक्स का उपयोग करें। अनुमत सार्वजनिक मार्ग पर स्वतंत्र सार्वजनिक-कलाकृति डाउनलोड के लिए, HTTP प्रॉक्सी सूची की एक प्रविष्टि स्थिर HTTP एंडपॉइंट प्रदान कर सकती है जब Chef क्लाइंट के पास कोई कॉन्फ़िगर किया हुआ या रखा हुआ प्रॉक्सी खाता न हो। इसके आंतरिक अपवर्जन बनाए रखें; पता चुनना यह नहीं बदलता कि compile और converge इसे कब उपभोग करते हैं।
यदि किसी एक ऑपरेशन को विशेष मार्ग चाहिए, तो उसका कॉन्फ़िगरेशन परिवर्तन और निष्पादन एक ही दायरे में रखें। उपयुक्त unified-mode व्यवहार वाला कस्टम संसाधन एक विकल्प है, लेकिन Chef::Config वैश्विक ही रहता है। डाउनलोड विफल होने पर और फ़ाइल पहले से अद्यतित होने पर इसे पुनर्स्थापित करें। अद्यतन अधिसूचना बिना शर्त नहीं चलती, और किसी अपवाद के बाद बाद वाला सफ़ाई संसाधन कभी नहीं चल सकता।
lazy source प्रॉपर्टी उस प्रॉपर्टी के मूल्यांकन को टालती है, आसपास के Ruby असाइनमेंट को नहीं। जब डाउनलोड ठीक उसी समय का हो, तब compile-समय संसाधन निष्पादन एक अलग समर्थित विकल्प है; यह निर्भरता और अधिसूचना समय भी बदलता है। घोषणा क्रम अलगाव देगा ऐसी अपेक्षा करने के बजाय, HTTP क्लाइंट अपनी प्रॉक्सी सेटिंग कब उपभोग करता है उसके अनुसार चुनें।