Ошибка выполнения команды Ansible

У меня есть скрипт bash, который я выполняю на узле с помощью Ansible.

- name : execute the script for uploading www files
  shell: /root/upload_www.sh

Часть скрипта выполняется:

ssh -t -o StrictHostKeyChecking=no -i $key user@$backupsrv "sudo rsync -ravzhe \"ssh -o StrictHostKeyChecking=no -i $key\" /var/www/html user@$source:/var/www/"

Этот сценарий выполняется очень долго (около 3 часов, потому что есть задачи rsync с примерно 80 ГБ данных и другой логикой), и задача Ansible завершается с сообщением об ошибке: "Killed", но сценарий продолжает выполняться, и все задачи в этом сценарии в конечном итоге выполняются. закончить успешно.

На хосте Ansible после запуска команды ansible-playbook www.yml я получаю следующий вывод:

# echo $?
137

Как я могу дождаться завершения моего скрипта?


person Serko    schedule 04.12.2015    source источник


Ответы (1)


Вместо этого вы можете сделать свою задачу асинхронным действием, добавив async: "{{ max_wait_time }}"option:

- name : execute the script for uploading www files
  shell: /root/upload_www.sh
  async: 10800 # max wait of 3 hours in seconds
  poll: 300 # check for completion every 300 seconds

Тем не менее, я бы с осторожностью относился к использованию асинхронного действия в течение такого длительного периода времени и к тому, может ли вам быть лучше с другим подходом, но трудно предложить лучший способ сделать что-то, не зная проблемы, которую вы пытаетесь решить. .

person ydaetskcoR    schedule 04.12.2015
comment
Причина была в памяти меньше: ssh -t -o StrictHostKeyChecking=no -i $key user@$backupsrv sudo rsync -ravzhe \ssh -o StrictHostKeyChecking=no -i $key\ /var/www/html user@$source: /var/www/ › /dev/null 2›&1 Весь вывод с ноды располагался на ansible host, там было много файлов, поэтому linux убил этот процесс. Спасибо. - person Serko; 04.12.2015