使用 Chef 时如何重新加载 systemd 服务
How to reload a systemd service when using Chef
我有一个使用 Chef 管理的 systemd 服务。
大厨如何做 systemctl daemon-reload
?
例如,如下所示,我可以重新加载我的服务,但这不会执行 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
我们可以使用 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
我有一个使用 Chef 管理的 systemd 服务。
大厨如何做 systemctl daemon-reload
?
例如,如下所示,我可以重新加载我的服务,但这不会执行 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
我们可以使用 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