Chef infra 仅在特定属性更改时重新启动服务

Chef infra 仅在特定属性更改时重新启动服务,chef-infra,Chef Infra,假设您有2对属性和1个对应的模板,并且每对属性用于不同的服务。如何分别重新启动每个服务,而不是在2对属性中只有1对发生更改时重新启动两个服务。谢谢 #recipe template "/etc/security/limits.conf" do source 'limits.conf.erb' mode '0644' notifies :restart, 'service[nginx]' #need code to restart separately notifies :rest

假设您有2对属性和1个对应的模板,并且每对属性用于不同的服务。如何分别重新启动每个服务,而不是在2对属性中只有1对发生更改时重新启动两个服务。谢谢

#recipe
template "/etc/security/limits.conf" do
  source 'limits.conf.erb'
  mode '0644'
  notifies :restart, 'service[nginx]' #need code to restart separately
  notifies :restart, 'service[memcached]' #same as above
end

#attributes
default['nginx']['www-data']['soft'] = 32000
default['nginx']['www-data']['hard'] = 32000
default['memcache']['soft'] = 32000
default['memcache']['hard'] = 32000

#template
www-data soft nofile <%= node['nginx']['www-data']['soft'] %>
www-data hard nofile <%= node['nginx']['www-data']['hard'] %>
memcache hard nofile <%= node['memcache']['hard'] %>
memcache soft nofile <%= node['memcache']['soft'] %>
#配方
模板“/etc/security/limits.conf”do
来源“limits.conf.erb”
模式'0644'
通知:重新启动“服务[nginx]”#需要代码单独重新启动
通知:重新启动“服务[memcached]”#同上
结束
#属性
默认值['nginx']['www-data']['soft']=32000
默认值['nginx']['www-data']['hard']=32000
默认值['memcache']['soft']=32000
默认值['memcache']['hard']=32000
#模板
www数据软文件
www数据硬文件
memcache硬文件
memcache软文件

我建议您尝试添加一个中间人ruby块来管理服务。您需要将下面的if和elsif语句替换为用于检查启动哪个服务的语句--


你能发布一些示例代码吗?有很多方法,这都取决于您的实现。谢谢欢迎来到SO,顺便说一句。谢谢,伊莎贝尔。我添加了代码。保重。谢谢@IsabelHM,这正是我所需要的。祝你周末愉快@丹。很高兴听到这个消息。你也是!:)
template '/etc/security/limits.conf' do
  source 'limits.conf.erb'
  mode '0644'
  notifies :run, 'ruby_block[start_right_service]', :immediately
end

ruby_block 'start_right_service' do
  action :nothing
  block do
    if [# nginx attributes changed]
       self.notifies :restart,'service[nginx]',:immediately
    elsif [# memcachedattributes changed]
       self.notifies :restart,'service[memcached]',:immediately
    else
       self.notifies :restart,'service[nginx]',:immediately
       self.notifies :restart,'service[memcached]',:immediately
    end    
  end
end