Запуск сценария python с использованием оболочки в ansible, но, похоже, не выводит стандартный вывод с использованием print () - PullRequest
0 голосов
/ 17 марта 2020
  shell: sleep 5; nohup python /tmp/rsync.py {{check}} {{source}} {{destination}} {{dest_host}} &
  register: status
  failed_when: "'FAILED' in status.stdout"

В моей пьесе есть что-то вроде приведенного выше фрагмента кода. А в скрипте python я использовал операторы print. Но когда я запускаю и использую debug, stdout пуст. Для отладки я попробовал эти два способа -

          - name: debug
            debug: var=status.stdout_lines
        - name: debug
          debug: msg={{ status.stdout }}

Для печати на стандартный вывод я также использовал sys.stdout.write. Даже это не похоже на работу. Достигнуто все что мне нужно. Только это не работает.
Редактировать : Я должен запустить его в фоновом режиме. Есть ли новый подход для обработки этого?

1 Ответ

0 голосов
/ 19 марта 2020

Использовать asyn c support из Ansible [1]

Настроить значение для asyn c в зависимости от того, сколько времени требуется вашей команде оболочки для выполнения ( если это пять секунд, сделайте asyn c несколько выше, чем 5)

Настройте значение для опроса на основе того, как часто вы хотите проверить, завершила ли оболочка выполнение

- name: Execute shell
  shell: sleep 5; nohup python /tmp/rsync.py {{check}} {{source}} {{destination}} {{dest_host}}
  async: 100
  poll: 1
  register: status
  failed_when: "'FAILED' in status.stdout"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...