如果使用Ansible运行服务,如何停止

时间:2018-11-02 10:22:06

标签: jenkins ansible devops ansible-2.x

我想知道仅在Ansible运行时停止服务的最佳方法。我希望按照这些思路做些事情

- name: Check to see if Jenkins is running
  service:
    name: jenkins
    state: status
  register: jenkins_running_status

- name: Stop Jenkins if it is running
  service:
    name: jenkins
    state: stopped
  when: jenkins_running_status == False

显然这是行不通的。我想知道停止仅Jenkins这样的服务的最佳方法。

1 个答案:

答案 0 :(得分:1)

无需检查服务是否正在运行。如果它正在运行,则ansible会停止它,如果没有运行,则不会发生任何事情,因为状态已经停止。

因此,这样的东西足以满足您的需求。

- name: Stop Jenkins
  service:
    name: jenkins
    state: stopped

但是,要回答您的问题,类似的方法将起作用(我假设您使用systemd):

- name: Check Jenkins
  shell: systemctl status jenkins.service | grep Active | awk -v N=2 '{print $N}'
  register: output

- name: Stop Jenkins
  service:
    name: jenkins
    state: stopped
  when: output.stdout == 'active'