我创建了一个简单的 Ansible 角色,目的是在 OSX 目标上配置 dnsmasq(dnsmasq 是从自制软件安装的)。
我想创建一个处理程序,当配置文件被更改时将重新启动守护进程(Ansible 从 1.9.3 版开始不为 OSX 实现服务模块)。
我有一个任务:
- name: Create dnsmasq config file in /usr/local/etc/ from template
template: src=dnsmasq.conf.j2 dest=/usr/local/etc/dnsmasq.conf
notify:
- restart dnsmasq
其中/Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
有一个键<key>KeepAlive</key>
在不运行时自动启动守护程序,因此以下处理程序完成其工作。我可以一直依靠这个吗?
- name: restart dnsmasq
sudo: yes
command: launchctl stop homebrew.mxcl.dnsmasq
没有任何场景或时间问题会导致守护程序永久停止吗?编写此类处理程序的正确方法是什么?
来自
launchctl(1)
:所以我假设这
KeepAlive
会导致守护程序重新启动,尽管该子命令在LEGACY SUBCOMMANDS块中已关闭,所以苹果可能会在未来的某个时候将其删除?kickstart -k
看起来它会执行启动或重新启动,并且不在旧版块中......