Chef infra 厨师长-无法将服务资源配置为在修改模板资源时重新加载

Chef infra 厨师长-无法将服务资源配置为在修改模板资源时重新加载,chef-infra,Chef Infra,我完全不了解安装服务的工作流程 未安装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-southe

我完全不了解安装服务的工作流程 未安装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

我相信您在这里的问题是由于您在通知和订阅属性中使用了:立即

使用时:立即通知会立即运行,这在某些情况下是有意义的,但在这种情况下,由于Chef执行的方式,您正在通知或订阅的资源可能还不存在

默认情况下,are:delayed,这意味着它们排队等待触发,并在Chef运行结束时执行。然后可以将它们传递到服务器和您要通知的其他资源

对于上面的示例,我将修改如下:

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配置文件,然后在Chef运行结束时通知supervisord重新加载
  • 创建supervisord init.d脚本,然后在Chef运行结束时通知supervisord重新加载
  • 声明supervisord服务资源,支持重新启动、启动、停止和重新加载,并在任何这些资源运行后启用它

请参阅或更老的,但在某些方面更清楚地了解有关Chef如何执行跑步列表和跑步列表中的食谱的更多信息。

我的回答中是否遗漏了您的情况?我能做些什么来改进它?你找到解决这个问题的方法了吗?请不要忘记将答案标记为正确!:)