আমি এমন পরিস্থিতিতে আছি যেখানে শেফ কোনও পরিষেবা (পোস্টগ্রিস) শুরু করতে পারে তবে পরে এটি ব্যান্ড-অফ-ব্যান্ড বন্ধ হয়ে যেতে পারে। আমি পরিষেবাটি চলমান হওয়ার জন্য একটি পরবর্তী শেফ রান চাই। আমি এটি চেষ্টা করেছি:
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এটি চলমান করে তোলে। তবে এগুলি বহনযোগ্যতার কারণে অ্যান্টি-প্যাটার্নগুলির মতো মনে হয় (এবং পরবর্তী ক্ষেত্রে এটি পুনরায় শুরু করার আগে এটি সম্ভবত থামিয়ে দেওয়া হয়)।
সুতরাং, আমি কীভাবে শেফকে বলছি যে এটি জোর করে পরিষেবা শুরু করতে বলুক, এমনকি যদি এটি মনে করে যে এটি ইতিমধ্যে চালু রয়েছে?
এটি শেফ ১১. using ব্যবহার করছে, ওপসকোড দ্বারা হোস্ট করা এবং ডিফল্ট পোস্টগ্র্যাসকিএল রেসিপি। (নোট এটি অনুরূপ তবে আমি শেফের "আপ টু ডেট" রিসোর্সের উপর কীভাবে বলবৎ করতে পারি তার মতো আমি একেবারে একরকম না বলে মনে করি ? )
--- সম্পাদনা (জটিম্বারল্যান্ড পোস্টের পরে ব্যাখ্যা) ---
-l debugএখানে শো:
DEBUG: service[postgresql] supports status, running
DEBUG: service[postgresql] is running
এমনকি যখন এটি চলছে না। এটি একটি বাগের মতো শোনাচ্ছে এবং আমি এতে আগ্রহী। তবে আমি প্রাথমিকভাবে শেফকে "সর্বদা পরিষেবা শুরু করার আদেশটি উপস্থাপন করে, স্ট্যাটাস চেক এড়িয়ে যাওয়া" বলার উপায় আছে কিনা তা সম্পর্কে আগ্রহী। এখানেই প্রশ্ন।
(আমি কোন বিশেষজ্ঞ নই কিন্তু আমি মনে করি একটি সেবা নিশ্চিত করার জন্য সবচেয়ে পোর্টেবল পথ চলছে সেবা শুরু করার জন্য করা হয় এবং যে প্রায় সবসময় idempotent আছে। OTOH পরীক্ষণ একটি সেবা চলছে কিনা কম সামঞ্জস্যপূর্ণ এবং আমি দেখতে পাচ্ছি না কেন আমরা যত্ন করা উচিত !)
:startনির্বিশেষে এর:status। এছাড়াও আমি আশা করি এটি একটিps -ef | grep [p]ostgresqlবা অনুরূপ করে, অন্যথায় এটি সাধারণত তার নিজস্ব গ্রেপ কমান্ডের সাথে মেলে এবং এইভাবে সর্বদা মনে করে যে পরিষেবাটি চলছে। (বা সম্ভবত এটি অন্তর্নিহিত সমস্যা?)