Ansible:无法将/ etc / ansible / hosts解析为清单资源

时间:2018-11-08 10:19:56

标签: ssh error-handling ansible

我是ansible的新手,遇到了以下问题。 我可以通过SSH进入客户端计算机,但无法运行剧本。

得到以下错误:

[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source

 [WARNING]: No inventory was parsed, only implicit localhost is available

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'

 [WARNING]: Could not match supplied host pattern, ignoring: a

这是我的群组名称。我的主机如下:

---------


[a]
172.31.26.93



[all:vars]

ansible_user=vagrant
ansible_ssh_pass=vagrant


 ansible_ssh_host=172.31.26.93
 ansible_ssh_port=22
 ansible_ssh_user='ansibleuser'
 ansible_ssh_private_key_file=/home/ansibleuser/.ssh

-------我的剧本文件如下----

- hosts: a
  tasks:
  - name: create a directory
    file: path=/home/ansiblesuser/www state=directory

这是我第一次遇到此问题。

7 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,插件 ini 和 yaml 在 ansible.cfg 中未启用:

[inventory]
enable_plugins = yaml, ini

答案 1 :(得分:1)

在运行剧本之前,只需运行以下命令

ansible all --list-hosts

如果上述错误仍然存​​在,请转到/etc/ansible/ansible.cfg并编辑指向您的特定主机文件的inventory路径。

答案 2 :(得分:0)

以下内容为我解决了这个问题:

  1. 转到根目录/
  2. cd etcmkdir etccd etc
  3. mkdir ansible然后cd ansible
  4. vi hosts(然后添加主机)
  5. chmod 777 hosts
  6. 检查ansible all -m ping

答案 3 :(得分:0)

Centos 7

这是导致上述错误的原因: ansible-playbook -i host_test -vtasks.yml

此问题已解决: ansible-playbook -i hosttest -v task.yml

答案 4 :(得分:0)

我突然遇到了同样的问题,因为库存已经使用了很多年,并且最近没有变化。 原来我启用了一个导致此问题的插件。

我启用了插件vmware_vm_inventory,它是消息的来源。这通过运行ansible-playbook -vvvv <host>

来显示

我认为我应该在ansible.cfg文件中定义该插件,该文件位于运行使用该插件的剧本的文件夹中,并将其放在/etc/ansible/ansible.cfg

答案 5 :(得分:0)

没有读取权限的主机文件导致以下错误消息:

[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'

解决方案:更改权限

sudo chmod 744 /etc/ansible/hosts 

在另一种情况下,由于主机文件格式不正确,我收到了一条错误消息:

[WARNING]:  * Failed to parse /etc/ansible/hosts with yaml plugin: YAML
inventory has invalid structure, it should be a dictionary, got: <class
'ansible.parsing.yaml.objects.AnsibleUnicode'>
[WARNING]:  * Failed to parse /etc/ansible/hosts with ini plugin:
/etc/ansible/hosts:3: Expected key=value host variable assignment, got: ;
[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available

并且我通过更正格式错误解决了该问题。

按照another answer中的建议,检查主机是否可用

ansible all --list-hosts

还要检查Ansible配置文件ansible.cfg中库存文件的实际位置。

答案 6 :(得分:0)

如果磁盘上也不存在该文件,您将看到此错误。

这将在 BOOST_CLASS_EXPORT 日志中:

-vvvv