我有一个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个小时,因为有包含大约80gb数据和其他逻辑的rsync任务),Ansible任务以错误消息:"Killed"结束,但是脚本
继续执行,该脚本中的所有任务最终都会成功完成。
在Ansible主机上运行命令ansible-playbook www.yml后,我得到以下输出:
# echo $?
137

我怎么能等我的剧本正常结束呢?

最佳答案

您可以将任务设为asynchronous action而不是添加async: "{{ max_wait_time }}"选项:

- 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

但是,我会谨慎地使用异步操作这么长时间,以及是否使用不同的方法可能会更好,但是在不知道您要解决的问题的情况下,很难建议更好的方法来做事情。

关于bash - Ansible命令执行错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34089737/

10-16 17:37