我对 Ansible 比较陌生,我创建了一个可以在“裸”服务器上安装 Tomcat 配置的剧本。我想知道如何解决能够更新 init.d 脚本的问题,同时避免在脚本没有更改时在剧本开始时停止服务。这是基本的剧本:
- name: stop tomcat service
service: name=my_service state=stopped
- name: copy init.d script
template: src=script.j2 dest=/etc/init.d/my_service
- name: do other tasks here
- name: start tomcat service
service: name=my_service state=restarted
即使没有任何更改,此 playbook 也将始终停止并启动服务。我希望剧本做的只是在有实际变化时停止和启动服务。
我知道我可以使用处理程序(需要进一步研究),但我需要在复制 NEW 脚本之前使用 OLD init.d 脚本停止服务。AFAIK 处理程序在操作发生后响应任务的结果,这意味着新脚本已经复制到旧脚本上,并且可能会阻止服务停止和重新启动。
我该如何处理?