Ansible“提供的主机列表为空”错误

Ansible“提供的主机列表为空”错误

我创建了一个带有 .yml 扩展名的库存文件,如下所示:

---
  all:
    server1
    hosts:
      server2
    children:
      hana:
        prod:
          client1:
            hosts:
              server3
          client2:
            hosts:
              server4
        test:
          client1:
            hosts:
              server5
          client1:
            hosts:
              server6
...

然后我使用以下命令对所有主机运行 ping ad-hoc:

ansible -m ping -i /etc/ansible/inventories/linuxall.yml all

我看到了这些警告,并且 ping 不起作用:

 [WARNING]: Unable to parse /etc/ansible/inventories/linuxall.yml 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'

为什么 ansible 无法解析我的库存?我应该做些什么吗?

答案1

在以下链接的示例中,每一行(包括服务器名称)都以冒号结尾:

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

答案2

我找到了问题和解决方案:

ansible.cfg 文件中有一个名为 [inventory] ​​的部分。删除“enable inventory plugins...”行开头的 # 字符。然后 .yml 和 .yaml inventory 文件将被激活。

此外,每行其他主机名之后也都需要有“:”字符。

答案3

-K对我来说,解决方法是:我需要使用开关指定 playbook.yml 的位置

ansible-playbook -K /root/myplatform/playbook.yml

相关内容