hep*_*olu 6 init ansible ansible-playbook
我对Ansible比较新,我创建了一个可以在'裸'服务器上安装Tomcat配置的playbook.我想知道如何解决能够更新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
即使没有任何变化,此剧本也将始终停止并启动该服务.我希望剧本做的只是停止并在有实际变化时启动服务.
我知道我可以使用处理程序(需要查看更多),但我需要在复制NEW脚本之前使用OLD init.d脚本停止服务.AFAIK处理程序在操作发生后响应任务的结果,这意味着新脚本已经复制到旧脚本上,可能会阻止服务停止和重新启动.
我该如何处理?
任何设置为通知处理程序的任务都将在播放结束时执行此操作。
http://docs.ansible.com/playbooks_best_practices.html#task-and-handler-organization-for-a-role
 - name: Copy init.d script
   template: src=script.j2 dest=/etc/init.d/my_service
   notify: start tomcat service
handlers:
 - name: start tomcat service
   service: name=my_service state=restarted
您可能希望使用旧脚本来使用处理程序来停止使用旧脚本的服务,并使用不同的处理程序来复制新脚本。
| 归档时间: | 
 | 
| 查看次数: | 4453 次 | 
| 最近记录: |