我是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
这是我第一次遇到此问题。
答案 0 :(得分:3)
我遇到了同样的问题,插件 ini 和 yaml 在 ansible.cfg 中未启用:
[inventory]
enable_plugins = yaml, ini
答案 1 :(得分:1)
在运行剧本之前,只需运行以下命令
ansible all --list-hosts
如果上述错误仍然存在,请转到/etc/ansible/ansible.cfg
并编辑指向您的特定主机文件的inventory
路径。
答案 2 :(得分:0)
以下内容为我解决了这个问题:
/
cd etc
或mkdir etc
和cd etc
mkdir ansible
然后cd ansible
vi hosts
(然后添加主机)chmod 777 hosts
。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