Здесь я пытаюсь вызвать скрипт Python через доступную книгу воспроизведения. Когда я запускаю playbook, содержащий нижеупомянутый код, он успешно вызывает скрипт. Но скрипт ansible продолжает работать, пока скрипт Python не завершит все свои задачи.
- hosts: localhost
gather_facts: false
vars:
username: 'User'
password: '1234@345'
tasks:
- name: Invoking Python script
script: data_pull_push.py
args:
executable: python
Сценарий python "data_pull_push.py" получает данные из URL-адреса и отправляет их на другой URL-адрес. В нем слишком много данных. Так что получение и публикация всех данных занимает действительно много времени. Поэтому я хочу, чтобы сценарий Ansible запускал в нем скрипт Python и закрывал книгу воспроизведения. Сценарий Python должен работать в фоновом режиме.
И этот сценарий воспроизведения Ansible и сценарий python хранятся в git и будут запускать сценарий воспроизведения в башне Ansible. Я не понимаю, как это использовать в Ansible. Если кто-нибудь знает, дайте мне знать.
Вы должны использовать Асинхронные действия и опрос Возможности Ansible.
Итак, ваша задача должна выглядеть так:
- name: Long async task
command: python data_pull_push.py
async: <timeout value>
poll: 0
Создайте фоновое задание с помощью выбранных вами утилит диспетчера заданий, таких как atd, cron, supervisord или systemd. Просто примеры, многие другие менеджеры служб существуют в зависимости от операционной системы.
Из них по крайней мере cron, supervisord и systemd имеют модули оболочки Ansible. Даже если он не существует, вы можете вызвать systemd-run или что-то еще с помощью общей команды.