通过Ansible-Playbook我想首先检查服务的存在(运行),然后停止服务,例如mongod。
以下是停止服务的代码:
- name: stop
service:
name: mongod
state: stopped
但是如果你第二次运行上面的脚本,那么它会给你一个错误,表明服务没有运行。
如何在运行此脚本之前检查状态?如何确保服务正在运行然后停止它。
我不想要在剧本中不使用“shell”或“命令”选项,我想使用ansible模块。
解决方案:How to get service status by Ansible?正在使用shell或命令
答案 0 :(得分:1)
不幸的是我找不到答案所以我坚持使用旧的解决方案:
- name: Check if mongod is active
command: systemctl status mongod
register: deb_check
ignore_errors: yes
no_log: True
failed_when: false
# I ignored all errors when the process is dead
- name: Stop mongof if it is active otherwise SKIP
service:
name: mongod
state: stopped
when: deb_check.stdout.find('dead') == -1
如果您找到了解决方案,请告知。
答案 1 :(得分:0)
正确的答案是使用处理程序,它们尤其可以避免多次启动或停止服务,因为处理程序只会在游戏结束时执行。
你可以尝试这样的事情:
Toolbar