通过ansible模块的服务状态(不是通过“shell”或“c​​ommand”)

时间:2017-11-09 15:27:26

标签: mongodb service ansible

通过Ansible-Playbook我想首先检查服务的存在(运行),然后停止服务,例如mongod。

以下是停止服务的代码:

- name: stop 
  service:
    name: mongod
    state: stopped

但是如果你第二次运行上面的脚本,那么它会给你一个错误,表明服务没有运行。

如何在运行此脚本之前检查状态?如何确保服务正在运行然后停止它。

想要在剧本中不使用“shell”或“命令”选项,我想使用ansible模块。

解决方案:How to get service status by Ansible?正在使用shell或命令

2 个答案:

答案 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