Ift*_*fti 1 linux ssh ansible devops
一次运行所有任务时,Ansible 在运行任务之间断开了 SSH 会话,这需要 26 小时才能完成,但 ansible 在执行 6 小时后断开了 SSH 会话。保持会话的目标服务器 SSH 配置如下:
ClientAliveInterval 172000
ClientAliveCountMax 10
Run Code Online (Sandbox Code Playgroud)
Ansible 任务:
- name: Executing script
remote_user: "{{admin_user}}"
become: yes
shell: sudo -u test bash ./customscript.sh > /log_dir/customscript.log 2>&1
args:
chdir: "deployment_source/common"
tags:
- custom-test
Run Code Online (Sandbox Code Playgroud)
找到下面的错误日志:
22:11:44 TASK [role-deployment : Executing script] ************
22:11:44 fatal: [x.x.x.x]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Shared connection to x.x.x.x closed.\r\n", "unreachable": true}
22:11:44
22:11:44 NO MORE HOSTS LEFT *************************************************************
22:11:44 to retry, use: --limit @/opt/ansible/test/deployment.retry
22:11:44
22:11:44 PLAY RECAP *********************************************************************
22:11:44 x.x.x.x : ok=6 changed=2 unreachable=1 failed=0
Run Code Online (Sandbox Code Playgroud)
请告知,断开连接是什么问题?怎么解决呢?
您永远不应该期望网络连接稳定那么长时间。
Ansible 中有异步机制来处理长时间运行的作业。
将您的代码重构为:
- name: Executing script
remote_user: "{{admin_user}}"
become: yes
shell: sudo -u test bash ./customscript.sh > /log_dir/customscript.log 2>&1
args:
chdir: "deployment_source/common"
async: 180000
poll: 60
tags:
- custom-test
Run Code Online (Sandbox Code Playgroud)
允许您的任务执行多达 50 小时,并每 60 秒检查一次完成情况。
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |