ansible报错处理Failed to create temporary directory

使用ansible批量远程管理主机,某一台主机报错

使用ping模块进行测试

ansible IP -m ping (这里再hosts中配置了ssh用户和密码,就不需要额外输入 -u和-k了)

************ | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to create temporary directory.In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo /**/**/.ansible/tmp `\"&& mkdir \"` echo /**/**/.ansible/tmp/ansible-tmp-1706672405.38-647550-178658540460703 `\" && echo ansible-tmp-1706672405.38-647550-178658540460703=\"` echo /**/**/.ansible/tmp/ansible-tmp-1706672405.38-647550-178658540460703 `\" ), exited with result 1",
    "unreachable": true
}

解决办法:

1、网络端口是否正常  telnet  目标IP  22

2、ssh 用户@IP 试下是否能成功

3、ssh用户的权限是否足够

如果还是不行,则把执行过程打印出来,添加-vvv

ansible IP -m ping  -vvv

发现报错

<************> (1, '', 'mkdir: cannot create directory \xe2\x80\x98/**/**/.ansible\xe2\x80\x99: Permission denied\n')
<************> Failed to connect to the host via ssh: mkdir: cannot create directory ‘/**/**/.ansible’: Permission denied

进入目标主机,进入到报错的目录中,这里需要理解一下ansible执行过程,为什么需要到一个目录下去create目录

ansible命令执行过程
    1. 加载自己的配置文件 默认/etc/ansible/ansible.cfg
    2. 加载自己对应的模块文件,如command
    3. 通过ansible将模块或命令生成对应的临时py文件,
       并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
    4. 给文件+x执行
    5. 执行并返回结果
    6. 删除临时py文件,sleep 0退出

可以看到第3步骤,需要创建指定临时目录,而远程登录主机发现该目录的属主和属组都是root下, 两种解决办法

(1)修改属组属主chown  **:**  -R  /目录

(2)修改ansible配置文件,将remote_tmp改为该用户有权限的目录

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用Ansible时,可能会遇到这样的错误提示:“added 'ip' (ecdsa) to the list of known hosts”。这个错误提示表示Ansible试图将目标主机的IP地址添加到已知主机列表中。 这个错误通常是由于第一次连接到远程主机时引起的,Ansible将主机密钥添加到~/.ssh/known_hosts文件中。这是Ansible的正常行为,以确保安全连接和身份验证。 要解决这个问题,有以下几种方法: 1. 忽略已知主机检查:在执行Ansible命令时,可以使用`-k`参数或`--ask-pass`参数来忽略对已知主机的检查。例如,`ansible-playbook -i inventory.ini playbook.yaml -k`。这个方法虽然简单,但会牺牲一部分安全性。 2. 更新known_hosts文件:如果你确定目标主机是安全的,你可以手动更新`~/.ssh/known_hosts`文件,添加目标主机的IP地址和密钥。你可以使用SSH命令`ssh-keyscan`来获取主机密钥并添加到known_hosts文件中。例如,`ssh-keyscan -H ip >> ~/.ssh/known_hosts`。这样做的好处是避免了每次连接时的询问,但仍保持了一定的安全性。 3. 使用ssh-keygen重新生成密钥:如果你不确定目标主机的安全性,你可以尝试使用`ssh-keygen`命令生成新的公钥和私钥。然后,将新的公钥复制到目标主机的`~/.ssh/authorized_keys`文件中。这样可以确保安全连接和身份验证。 无论你选择哪种方法,记得在操作之前确保备份重要的配置文件和数据,以免意外损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值