我创建了一个带有 .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