Как остановить службу, если она работает с использованием Ansible - PullRequest
0 голосов
/ 02 ноября 2018

Я хотел бы знать, как лучше всего остановить службу в 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 голосов
/ 02 ноября 2018

Нет необходимости проверять, работает ли служба. Если он запущен, 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'
...