如何让Ansible遇到SSH错误时自动重试避免playbook运行失败
Ansible 全局SSH/PAM临时错误自动重试配置方案
以下配置均在ansible.cfg中修改,无需调整单个task代码,全局生效:
1. 任务级全局重试配置([defaults] 段)
添加以下参数:
[defaults] # 全局任务失败默认重试次数,适配场景中2秒即可恢复的情况设置为3次即可 retries = 3 # 两次重试的间隔时间,单位为秒,设置为2秒匹配服务端恢复时间 retry_interval = 2
该配置为Ansible 2.2+原生支持,会自动重试所有执行失败的任务,已经执行成功的with_items条目不会被重复执行,不会影响批量操作的正确性。
2. SSH连接层重试配置([ssh_connection] 段)
添加以下参数,从SSH连接层面提前处理临时断连问题:
[ssh_connection] # 配置SSH客户端本身的连接尝试次数和超时时间,遇到网络抖动/PAM临时故障时先由SSH层重试 ssh_args = -o ConnectTimeout=20 -o ConnectionAttempts=4 # 开启SSH长连接复用,减少频繁创建连接触发的服务端PAM校验阈值 control_persist = 120s
补充:你当前已开启的
pipelining = True可以保留,该参数可以减少SSH连接建立次数,降低触发服务端临时认证限制的概率。
内容的提问来源于stack exchange,提问作者opticyclic
相关产品推荐
相关产品推荐

