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
,这无关紧要。您还可以在一个资源中包含多个。有什么问题?