Ansible坚持收集事实

我有一些奇怪的问题,我的可能的盒子(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与密码,其他问题包括:

  • 私钥可能无法在目标上正确设置
  • 私钥在本地可能具有不正确的权限(只能由运行Ansible作业的用户读取)

解决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 ”。