2012-05-18 49 views
0

我完全沒有獲得安裝 init.d文件沒有安裝服務的工作流程。以下是我的主管安裝 的祕訣。還在下面的boostrap錯誤。我有init.d 和配置文件作爲模板。那麼,我如何調整邏輯來讓 廚師工作?廚師 - 當模板資源被修改時無法配置服務資源重新加載

ec2-175-41-185-174.ap-southeast-1.compute.amazonaws.com [Thu, 17 May 
2012 22:18:02 +0000] ERROR: Running exception handlers 
ec2-175-41-185-174.ap-southeast-1.compute.amazonaws.com [Thu, 17 May 
2012 22:18:02 +0000] FATAL: Saving node information to 
/var/chef/cache/failed-run-data.json 
ec2-175-41-185-174.ap-southeast-1.compute.amazonaws.com [Thu, 17 May 
2012 22:18:02 +0000] ERROR: Exception handlers complete 
ec2-175-41-185-174.ap-southeast-1.compute.amazonaws.com [Thu, 17 May 
2012 22:18:02 +0000] FATAL: Stacktrace dumped to 
/var/chef/cache/chef-stacktrace.out 
ec2-175-41-185-174.ap-southeast-1.compute.amazonaws.com [Thu, 17 May 
2012 22:18:02 +0000] FATAL: Errno::ENOENT: service[supervisord] 
(supervisor::default line 23) had an error: Errno::ENOENT: No such 
file or directory - /etc/init.d/supervisord restart 



easy_install_package "supervisor" do 
action :install 
end 

template "/etc/supervisord.conf" do 
path "/etc/supervisord.conf" 
source "supervisord.conf.erb" 
owner "root" 
group "root" 
mode "0600" 
end 

template "/etc/init.d/supervisord" do 
path "/etc/init.d/supervisord" 
source "supervisord.erb" 
owner "root" 
group "root" 
mode "0755" 
#notifies :start, "service[supervisord]", :immediately 
end 

service "supervisord" do 
supports :restart => true, :start => true, :stop => true, :reload => true 
action [ :enable] 
subscribes :start, resources(:template => 
"/etc/init.d/supervisord"), :immediately 
end 
+0

我的答案中,我錯過了任何情況嗎?我能做些什麼來改善它? –

+0

您是否找到解決此問題的解決方案?請不要忘記標記答案是正確的! :) – sethvargo

回答

0

我相信你的問題在這裏是由於您使用的:在您的立即通知訂閱屬性。

當您使用立即通知立即運行,這在某些情況下是有意義的,但在這種情況下,由於Chef如何執行,您通知或您要訂閱的資源可能尚不存在。

默認情況下,notifications are:延遲這意味着它們排隊等待觸發並在Chef運行結束時執行。然後他們可以交付到您想要通知的services和其他資源。

對於你上面的例子,我會修改如下事情:

template "/etc/supervisord.conf" do 
path "/etc/supervisord.conf" 
source "supervisord.conf.erb" 
owner "root" 
group "root" 
mode "0600" 
notifies :reload, "service[supervisord]", :delayed 
end 

template "/etc/init.d/supervisord" do 
path "/etc/init.d/supervisord" 
source "supervisord.erb" 
owner "root" 
group "root" 
mode "0755" 
notifies :reload, "service[supervisord]", :delayed 
end 

service "supervisord" do 
supports :restart => true, :start => true, :stop => true, :reload => true 
action :enable 
end 

上面的代碼執行以下操作:

  • 創建supervisord配置文件,然後通知supervisord在年底重裝廚師跑
  • 創建supervisord init.d腳本,然後通知supervisord在廚師跑完後重新加載
  • Dec拉雷斯的supervisord服務資源,支持重新啓動,啓動,停止,並重新加載,並使其後的任何那些已經運行

的見The Chef Run或上了年紀,但在某些方面更清晰Anatomy of a Chef Run的更多信息,如何廚師在運行列表中執行運行列表和食譜。