我想知道仅在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这样的服务的最佳方法。
答案 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'