Ansible 错误 "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable" 是啥意思?

Posted

技术标签:

【中文标题】Ansible 错误 "ERROR! (25, \'Inappropriate ioctl for device\')", "unreachable" 是啥意思?【英文标题】:What does Ansible error "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable" mean?Ansible 错误 "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable" 是什么意思? 【发布时间】:2016-04-07 01:57:30 【问题描述】:

我有一个 Rasberry pi,我可以通过 SSH 从终端通过以太网电缆从我的 Macbook 连接到 pi,通过命令“ssh pi@169.254.0.2”

然而,当我对这个主机运行 ansible playbook 时

[pis]
169.254.0.2

我收到以下错误:

PLAY [Ansible Playbook for configuring brand new Raspberry Pi]         *****************

TASK [setup] *******************************************************************
<169.254.0.2> ESTABLISH CONNECTION FOR USER: pi on PORT 22 TO 169.254.0.2
CONNECTION: pid 2118 waiting for lock on 10
CONNECTION: pid 2118 acquired lock on 10
fatal: [169.254.0.2]: UNREACHABLE! => "changed": false, "msg": "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable": true

PLAY RECAP *********************************************************************
169.254.0.2                : ok=0    changed=0    unreachable=1    failed=0   

我的 ansible 版本是 2.0.0.2。

如何配置 Ansible,使其以与我能够从终端成功连接 SSH 相同的方式连接?

【问题讨论】:

令人惊讶地,难以理解(对我来说):如果我先 ping 服务器,然后运行 ​​playbook,它就可以工作 :) --> 例如。 ansible -i ansible-pi/hosts pis -m ping --ask-pass --sudo; ansible-playbook ansible-pi/playbook.yml -i ansible-pi/hosts --ask-pass --sudo 【参考方案1】:

在报告此类问题时始终包含 Ansible 版本。当 Ansible 打开多个 ssh 连接时,我遇到了类似的问题。您可以在 Ansible 配置文件 (/etc/ansible/ansible.cfg) 中将 pipelining 设置为 False 并重试吗?在设置之前检查它现在设置的内容。

pipelining = False

【讨论】:

很好的电话,我忘记了。我在问题中添加了我的 ansible 版本(2.0.0.2)——如果你会看到我的评论,我发现了一个有效的“hack”,但我会尝试你的想法 似乎添加该配置也可以解决问题!我不知道是什么导致了这个错误,但如果有人遇到这个谜团,我希望这篇 *** 帖子能帮助你像我一样开心【参考方案2】:

我在尝试从 docker 容器内运行 ansible 时收到此错误,我也收到了同样的错误。 This answer 引导我找到解决方案,即您必须添加分配伪 TTY 的 -t 标志。

例如

sudo docker run -t -v `pwd`:/ansible -w /ansible ansible:latest ansible-playbook -i inventory.yml site.yml

【讨论】:

以上是关于Ansible 错误 "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable" 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

ansible报错

[ansible学习笔记]Error: ansible requires the stdlib json or simplejson module, neither was found!

Ansible virtualenv下pip3安装requirements报错

Ansible virtualenv下pip3安装requirements报错

六ansible-playbook任务控制

ansible playbook yummodule error