मैं हल्के संसाधन को परिभाषित करने में सक्षम होना चाहता हूं, मान लें कि उनमें से दो पैरामीटर हैं, उनमें से दो बुनियादी/प्राथमिक पैरामीटर हैं और तीसरा इन दोनों का संयोजन है। मैं तीसरे पैरामीटर के अनुकूलन की संभावना भी प्रदान करना चाहता हूं। उदाहरण के लिए:शेफ में एक गतिशील विशेषता डिफ़ॉल्ट को कार्यान्वित करने के लिए कैसे करें LWRP परिभाषा
full_name
विशेषता के लिए व्यवहार ऊपर प्राप्त करने के लिए कोड निम्नलिखित संशोधित करने के लिए कैसे:
संसाधन परिभाषा:
actions :install
attribute :name, :kind_of => String, :name_attribute => true
attribute :version, :kind_of => String
attribute :full_name, :kind_of => String
प्रदाता परिभाषा:
action :install do
Chef::Log.info "#{new_resource.full_name}"
end
मैं अलग के लिए अलग-अलग आउटपुट देखना चाहते हैं ईएनटी संसाधन निर्देशों, उदा .:
resource "abc" do
version "1.0.1"
end
abc-1.0.1
में परिणाम होगा, लेकिन:
resource "def" do
version "0.1.3"
full_name "completely_irrelevant"
end
completely_irrelevant
का परिणाम देगा।
क्या इस व्यवहार को संसाधन परिभाषा में परिभाषित करने की संभावना है (शायद default
पैरामीटर के माध्यम से) या मैं केवल प्रदाता परिभाषा में ऐसा करने में सक्षम हूं? यदि दूसरा सत्य है, तो क्या मैं गणना की गई मान new_resource
ऑब्जेक्ट की full_name
विशेषता में संग्रहीत कर सकता हूं (कक्षा full_name=
विधि परिभाषा को याद करती है) या मुझे इसे स्थानीय चर में संग्रहीत करना है?
अद्यतन
ड्रेको संकेत के लिए धन्यवाद, मुझे एहसास हुआ कि मैं संसाधन फ़ाइल में एक्सेसर विधि बना सकते हैं और जब अनुरोध मक्खी पर full_name
मूल्य की गणना कर सकते हैं। मैं एक क्लीनर समाधान पसंद करूंगा लेकिन यह कार्रवाई कार्यान्वयन में इसकी गणना करने से कहीं बेहतर है।
बावर्ची संस्करण बावर्ची: निर्माता में 10.16.4
दुर्भाग्यवश ऐसा लगता है कि इस बिंदु पर 'संस्करण' सदस्य चर 'शून्य' है, भले ही यह संसाधन निर्देश में निर्दिष्ट है। ऐसा लगता है कि एक नुस्खा में निर्दिष्ट विशेषता मान सदस्य को असाइन नहीं किया गया है, फिर भी (जब मैं एक्शन हैंडलर में अपना मान लॉग करता हूं तो इसका उचित मूल्य होता है)। –
@DariuszWalczak मैंने जवाब तय किया। अब काम करना चाहिए। –