欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-30 12:33:10
...

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

[root@localhost ansible]# ansible --version
ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

 
问题如下:

[root@localhost ansible]# ansible all -m ping
10.0.10.2 | FAILED! => {
    "failed": true, 
    "msg": "failed to resolve remote temporary directory from ansible-tmp-1497056262.2-2494116636663 `( umask 77 && mkdir -p \"` echo ~/.ansible/tmp/ansible-tmp-1497056262.2-249411663666383 `\" && echnsible-tmp-1497056262.2-249411663666383=\"` echo ~/.ansible/tmp/ansible-tmp-1497056262.2-249411663663 `\" )` returned empty string"
}

 
问题分析:

这个问题,本质是由于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 “failed to resolve remote temporary directory from ansible-tmp” 问题最终解决办法
            
    
    
        ansible 
 
这种方案确确实实是可行的,但是我没有选择。因为我觉得存在既有道理,于是最后我就发现了是openssh的问题。

方法二:安装高版本的openssh:

yum update openssl openssh openssh-server openssh-clients -y

 
好了,这这个问题解决了

 

  • ansible “failed to resolve remote temporary directory from ansible-tmp” 问题最终解决办法
            
    
    
        ansible 
  • 大小: 19 KB
相关标签: ansible

上一篇:

下一篇: