Как проверить, работает ли PID в ansible, а если нет, то выполнить задачу? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть ansible playbook, который выполняет 3 действия:

a) Запуск сервера flask

b) Ожидание в течение 10 секунд до его запуска

c) Проверяет, работает ли PID

- name: "execute script to start flask"
  shell: nohup python main.py &
  args:
    chdir: /home/ubuntu/flask
    executable: /bin/bash

- pause: seconds=10

- name: "verify that the server has started"
  command: ?????

Вручную я делаю это, чтобы получить PID

pgrep -f /'main.py'

, который возвращает PID, скажем .. .

8212

Как выполнить шаг (c) в ansible playbook и убедиться, что если PID не найден, задача не будет выполнена?

1 Ответ

0 голосов
/ 25 апреля 2020

Я бы не работал с паузой, она без необходимости тормозит ваш playbook. Вы можете просто работать с pids Ansible -модулем и until

Пидами: https://docs.ansible.com/ansible/latest/modules/pids_module.html

L oop -До: https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#retrying -a-задача-до-условия-выполнено

Пример проверки каждые 5 секунд в течение 10 повторных попыток, если Pid с main.py тогда недоступен, книга воспроизведения потерпит неудачу.

---
- hosts: localhost
  tasks:
  - name: check the pid of main.py
    pids:
      name: main.py
    register: pid
    until: pid.pids | length > 0
    delay: 5
    retries: 10
  - debug: var=pid
...