我有一个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/