ansible “failed to resolve remote temporary directory from ansible-tmp” 问题最终解决办法

概要 原本是ansible1.9.x的版本,后来升级了ansible的版本之后出现,failed to resolve remote temporary directory from ansible-tmp……问题。连最基本的ping模块都使用不了了。
现在使用的ansible的版本是:2.1.0

问题如下图:
ansible问题截图
有了这个故障,于是我在github上找到了相同的问题,并且找到了解决办法。
问题分析:
这个问题,本质是由于ansbile在2.x,引入了ControlMaster来优化ssh链接的消耗问题。但是这个ControlMaster要依赖于的openssh,如果恰好机器上安装了openssh的高版本,那么就不会出现问题。那么如果是没有安装,那么又要说是ansible的bug了。好了,现在问题找到了,那么解决办法也自然而然了。
下面补充ControlMaster的工作原理讲解

在使用 OpenSSH 登陆到远端服务器时,通常我们会这么做:ssh user@IP
执行这个命令,成功登陆服务器后,客户端与服务器建立了一个安全的 TCP/IP 连接。用户每执行一次命令,就会有一个新的连接建立,并一直维持连接直到用户退出。如果用户有大量的连接请求,就需要建立并维持大量的 TCP/IP 连接,消耗用户和主机的资源。
OpenSSH 提供一个叫做 ControlMaster 的功能,可以有效缓解这一问题。在使用 ControlMaster后,ssh与服务器建立一个Master连接,之后的所有连接都可以重用这一通道,也就是说不管有多少访问请求,都只需要维护一个TCP/IP连接。

方法一:
这是我最开始在gitbub上看到的一个大神的解决方案,也就是关闭ssh ControlMaster功能。
ansible的故障解决
这种方案确确实实是可行的,但是我没有选择。因为我觉得存在既有道理,于是最后我就发现了是openssh的问题。
方法二:安装高版本的openssh:

最终问题解决:
ansbile问题解决

好了,这这个问题解决了!希望对困扰的朋友有所帮助。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: