Chef infra 如何使用Chef构建工件和重新加载服务?
我正在使用Chef infra 如何使用Chef构建工件和重新加载服务?,chef-infra,chef-recipe,chef-solo,Chef Infra,Chef Recipe,Chef Solo,我正在使用git资源克隆我的应用程序存储库,并使其与chef一起保持最新。如果发生了更改,我将在本地构建我的工件,但是,我还希望重新加载我的服务,以便可以应用更改。我正在考虑使用subscribe,但我不确定。我怎样才能做到这一点 .. # create application user/group/directories git node['mvp']['home'] do repository node['mvp']['repository'] revision 'master'
git
资源克隆我的应用程序存储库,并使其与chef一起保持最新。
如果发生了更改,我将在本地构建我的工件,但是,我还希望重新加载我的服务,以便可以应用更改。我正在考虑使用subscribe
,但我不确定。我怎样才能做到这一点
.. # create application user/group/directories
git node['mvp']['home'] do
repository node['mvp']['repository']
revision 'master'
user 'mvp'
group 'mvp'
action :sync
notifies :run, 'execute[build]', :immediately
end
# builds only if necessary/changes
execute 'build' do
user "mvp"
command 'make libs && make clean all'
cwd node['mvp']['home']
action :nothing
end
template '/etc/mvp_frontend' do
owner 'root'
group 'root'
mode '0600'
source 'mvp_frontend_env.erb'
end
directory '/etc/systemd/system/mvp.service.d' do
owner 'root'
group 'root'
mode '0755'
end
%w(mvp_frontend mvp_quote mvp_newsfeed).each do |srvc|
template "/etc/systemd/system/#{srvc}.service" do
owner 'root'
group 'root'
mode '0755'
source "#{srvc}.service.erb"
end
service "#{srvc}" do
supports :status => true, :stop => true, :restart => true, :reload => true
action [:enable, :start]
subscribes :reload, "template[/etc/systemd/system/#{srvc}.service]", :immediately
end
end
您的示例是订阅模板上的更新,您可能希望订阅git资源(或者可能是execute,但我不会走那么远)。您可以使用subscribes
或notifies
,这无关紧要。您还可以在一个资源中包含多个。有什么问题?