gpt4 book ai didi

init - 如何在 Ansible 中处理对 init 脚本的更改?

转载 作者:行者123 更新时间:2023-12-04 15:44:12 29 4
gpt4 key购买 nike

我对 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

即使没有任何更改,该剧本也将始终停止和启动服务。
我希望剧本做的只是在有实际更改时停止和启动服务。

我知道我可以使用处理程序(需要更多地研究),但我需要在复制新脚本之前使用旧的 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

您可能希望播放带有停止旧脚本服务的处理程序的旧脚本,以及使用处理程序复制新脚本的不同播放。

关于init - 如何在 Ansible 中处理对 init 脚本的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24350921/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com