【问题标题】:How to reload a systemd service when using Chef使用 Chef 时如何重新加载 systemd 服务
【发布时间】:2020-10-27 05:08:04
【问题描述】:

我有一个使用 Chef 管理的 systemd 服务。

systemctl daemon-reload 的 Chef 方法是什么?

例如,如下所示,我可以执行 myservice 的重新加载,但这不会执行 systemctl daemon-reload。

template '/etc/systemd/system/myservice.service do
  notifies :reload,'service[myservice]', :immediately 
end

service 'myservice' do
  supports status: true ...
  action %i[start enable]
end

【问题讨论】:

    标签: chef-infra systemd


    【解决方案1】:

    我们可以使用systemd_unit resource 管理 Systemd 服务定义。这样,如果服务配置发生更改,它将触发带有triggers_reload(默认设置为true)属性的重新加载。

    由于您使用的是模板,因此您可以将 systemd_unit 资源与 reload 操作一起用于您的服务。

    template '/etc/systemd/system/myservice.service' do
      notifies :reload, 'systemd_unit[myservice.service]', :immediately 
    end
    
    systemd_unit 'myservice.service' do
      action :nothing
    end
    

    其他选项是创建一个execute 资源,然后运行实际的daemon-reload 命令:

    template '/etc/systemd/system/myservice.service' do
      notifies :run, 'execute[daemon-reload]', :immediately 
    end
    
    execute 'daemon-reload' do
      command 'systemctl daemon-reload'
      action :nothing
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2020-06-14
      • 2015-05-11
      相关资源
      最近更新 更多