我有一个bash脚本,我使用Ansible在节点上执行。
> str(ds[[2]])
num [1:5] 1 0 0 0 0
部分脚本正在执行:
- name : execute the script for uploading www files
shell: /root/upload_www.sh
该脚本执行很长时间(大约3个小时,因为有大约80gb数据和其他逻辑的rsync任务),Ansible任务完成时出现错误消息: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/"
但是脚本
继续执行,该脚本中的所有任务最终都会成功完成。
在运行命令"Killed"
后的Ansible主机上,我得到以下输出:
ansible-playbook www.yml
我如何等待我的脚本正常结束?
答案 0 :(得分:4)
您可以通过添加async: "{{ max_wait_time }}"
选项来使您的任务成为asynchronous action:
- 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
但是,我对在这么长时间内使用异步动作持谨慎态度,以及你是否可能会采用不同的方法做得更好,但很难建议更好的做事方式不知道你想要解决的问题。