मैं ऐसी स्थिति में हूं जहां बावर्ची एक सेवा शुरू कर सकता है (पोस्टग्रेज कर सकता है) लेकिन बाद में इसे बंद कर दिया जा सकता है। मैं चाहता हूं कि बाद में शेफ चलाने के लिए सेवा चल रही हो। मैंने यह कोशिश की है:
service "postgresql" do
action :start
end
लेकिन इसका कोई प्रभाव नहीं है, (up to date)
शायद इसलिए क्योंकि शेफ जानता है कि इसे शुरू कर दिया गया है और यह बताने में सक्षम नहीं है कि यह बंद हो गया है। (संभवतः service ... status
इस सेवा के लिए कैसे व्यवहार किया जाए?) यदि मैं यह लिखता हूं:
# anti-pattern warning!
execute "force-start-postgresql" do
command "service postgresql start || /etc/init.d/postgresql start"
action :run
end
मुझे मनचाहा व्यवहार मिलता है। इसके अलावा action :restart
यह चल रहा है। हालाँकि पोर्टेबिलिटी (और बाद के मामले में इसे फिर से शुरू करने से पहले इसे रोकना) के कारण ये विरोधी पैटर्न की तरह प्रतीत होते हैं।
तो, मैं शेफ से कैसे कह सकता हूं कि वह जबरन सेवा शुरू कर दे, भले ही उसे लगे कि यह पहले से ही चल रहा है?
यह OpsCode द्वारा होस्ट किए गए शेफ 11.6 का उपयोग कर रहा है, और डिफ़ॉल्ट पोस्टग्रेसल नुस्खा। (ध्यान दें कि यह समान है लेकिन मुझे नहीं लगता कि Cheoff में "अप टू डेट" संसाधनों पर कार्रवाई को कैसे बाध्य किया जाए ।)
--- EDIT (jtimberland पोस्ट के बाद स्पष्टीकरण) ---
-l debug
यहाँ से पता चलता है:
DEBUG: service[postgresql] supports status, running
DEBUG: service[postgresql] is running
तब भी जब यह नहीं चल रहा है। तो यह एक बग की तरह लगता है, और मुझे इसमें दिलचस्पी है। हालाँकि मुझे मुख्य रूप से दिलचस्पी है कि क्या शेफ को बताने का एक तरीका है "हमेशा स्टेटस चेक को छोड़ना, सर्विस स्टार्ट कमांड को इनवाइट करना"। यहीं सवाल है।
(मैं कोई विशेषज्ञ नहीं हूं, लेकिन मुझे लगता है कि सेवा सुनिश्चित करने के लिए सबसे पोर्टेबल तरीका सेवा शुरू करना है और यह लगभग हमेशा ही बेकार है। ओटीओएच जाँच कर रहा है कि क्या सेवा चल रही है कम सुसंगत है और मुझे नहीं लगता कि हमें क्यों परवाह करनी चाहिए !)
:start
पर ध्यान दिए बिना की:status
। इसके अलावा, मुझे आशा है कि यह एकps -ef | grep [p]ostgresql
या समान है, अन्यथा यह आमतौर पर अपने स्वयं के grep कमांड से मेल खाता है और इस प्रकार हमेशा सोचता है कि सेवा चल रही है। (या हो सकता है कि यह अंतर्निहित समस्या है?)