我有一些奇怪的问题,我的可能的盒子(stream浪汉)。
一切工作昨天和我的手册工作正常。
今天,“收集事实”真的很难说吗?
这里是详细的输出:
<5.xxx.xxx.xxx> ESTABLISH CONNECTION FOR USER: deploy <5.xxx.xxx.xxx> REMOTE_MODULE setup <5.xxx.xxx.xxx> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '- o', 'ControlPersist=60s', '-o', 'ControlPath=/home/vagrant/.ansible/cp/ansible-s sh-%h-%p-%r', '-o', 'Port=2221', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o ', 'PasswordAuthentication=no', '-o', 'User=deploy', '-o', 'ConnectTimeout=10', '5.xxx.xxx.xxx', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1411372677 .18-251130781588968 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1411372677.18-2 51130781588968 && echo $HOME/.ansible/tmp/ansible-tmp-1411372677.18-251130781588 968'"]
我和stream浪汉上的Ansible ping有类似的问题,只是突然卡住了,以前工作的很好。 不像任何其他问题,如ssh或连接问题,它只是永远死亡,没有超时。
我做了一件事来解决这个问题是清理〜/ .ansible目录,它只是再次工作。 我找不到为什么,但它确实得到了解决。
如果你有改变,再次尝试清洁〜/ .ansible文件夹之前,刷新你的stream浪者。
由于许多原因,Ansible可以像这样挂起,通常是因为连接问题或设置模块挂起。 下面是如何缩小问题的范围,以便解决问题。
Ansible无法连接到目标主机
主机密钥(known_hosts)问题
1)在早期版本的Ansible(2.1或更早版本)上,Ansible不会总是告诉您目标的主机密钥是否在源上不存在,或者是否存在不匹配。
解决scheme:尝试使用与该目标相同的参数打开SSH连接。 您可能会发现需要解决的SSH错误,然后该命令将起作用。
2)有时Ansible会在其他状态中向您显示一条SSH连接消息,导致Ansible“冻结”该任务:
Warning: the ECDSA host key for 'myhost' differs from the key for the IP address '10.10.1.10' Offending key for IP in /etc/ssh/ssh_known_hosts:246 Matching host key in /etc/ssh/ssh_known_hosts:477 Are you sure you want to continue connecting (yes/no)?
在这种情况下,只要input“yes”作为SSH问题,就可以继续播放。 之后,您可以修复根known_hosts问题。
私钥authentication问题
如果使用基于密钥的身份validation与密码,其他问题包括:
解决scheme:尝试运行ansible -m ping <destination> -k
针对问题主机 – 如果不起作用,请尝试上面的“ 主机密钥问题”解决scheme。
Ansible不能快速收集事实
在收集硬件信息时(例如,如果从具有高I / O的主机获取磁盘信息), setup
模块(当在一个ansible-playbook
运行开始时自动运行,或者当作为ansible -m setup <host>
手动运行时) ,装载条目错误等)。
解决方法:尝试运行ansible -m setup -a gather_subset=!all <destination>
。 如果这样做,你应该考虑在你的ansible.cfg中设置这一行:
gather_subset=!hardware
我和Ansible在“收集事实”上有类似的问题。 我把我的脚本放到没有任务或angular色的提示下,仍然挂起。
我发现在我的stream程清单中有12个安全stream程在当天积累。
/usr/bin/python /tmp/ansible_Jfv4PA/ansible_module_setup.py /usr/bin/python /tmp/ansible_M2T10L/ansible_module_setup.py
一旦我杀了那些,它又开始工作了。
Dmytro正在做点什么!
Ansible使用主机的FQDN。 如果您的主机不是DNS可parsing的,并且您在/etc/hosts
没有映射,则等待DNS超时。
通过在你连接的机器的主机文件中join::1 <fqdn>
Ansible将立即得到FQDN而不用通过DNS。
请注意,主机应该从/etc/hosts
查找/etc/hosts
,这是大多数(如果不是全部的话)linux系统的默认设置,但是如果你编辑了/etc/nsswitch.conf
,那也可能是一个问题。
对于我来说,安装模块模块卡在一个死的NFS挂载。
如果你在你的机器上做了一个“df”而没有任何反应,你可能会遇到同样的情况。
PS:如果你不能卸载NFS共享/挂载点,考虑使用坏的“umount -l”
我不知道你是否使用sudo剧本 – 但我是,它挂在sudo密码。
从文档 – 你可以杀死,然后使用-K
。
祝你好运。
也许您的目标系统的指纹已更改,例如,当您重新安装服务器操作系统。 您必须删除known_hosts中的条目,ansible将不会通知不可信的条目是问题,它只是完全按照您描述的方式卡住。
这听起来是无法validation…所以使用-k让任何人问服务器密码….如下所示:
ansible-playbook -K -i hosts playbook.yml -vvvv
我通过重新设置stream浪箱来解决这个问题
vagrant destroy vagrant up
在我的情况下,ansible在一项任务中停止工作。 原因是因为我的ssh代理停止工作( ssh-add -l
没有返回任何东西)。 我重新启动了一切,然后再次运行。 所以检查你的ssh-agent是否工作正常( ssh-add -l
不应该卡住)。
FQDN和主机名称不匹配也会导致严重的环聊。 我已经使用域的FQDN不同于主机名域。 在完成两个平等 ,完美的作品之后。 在远程主机上执行任务之前,可能会比较FQDN和主机名。 希望它有帮助!
Sudo的密码是问题。 确保(1)你可以在没有提供一(2)个木偶没有扭转你早先的手动“sudoers”变化的情况下,在新开的terminal上(其中没有被caching的密码)发出“sudo anything ”。