如何在执行Ansible Playbook时通过命令行指定多个清单文件
解决Ansible指定多个清单文件运行Playbook的问题
这个问题我之前也碰到过,你之前用逗号分隔的方式其实搞错了Ansible的参数逻辑——逗号是用来指定单个清单源内的多个主机,而不是多个独立的清单文件。正确的做法是重复使用-i参数来逐个指定清单文件:
ansible-playbook -i inventory/Hostfile1 -i inventory/Hostfile2 sample.yml
为什么之前的命令没生效?
你尝试的ansible-playbook -i inventory/Hostfile1,Hostfile2 sample.yml会被Ansible解析为:从当前清单源(未指定默认源时会用系统默认inventory文件)里查找名为inventory/Hostfile1和Hostfile2的主机,而不是读取这两个文件作为清单。这显然不是你想要的结果,所以命令自然没生效。
额外说明
- 这个方法对静态清单文件和动态清单脚本都适用,需要多少个清单源,就重复多少次
-i参数即可。 - 用这种方式指定的多个清单,Ansible会自动合并它们的主机信息,同时只会加载你明确指定的文件,不会读取inventory目录下的其他无用文件,完全符合你的需求。
内容的提问来源于stack exchange,提问作者prasanna kumar
相关产品推荐
相关产品推荐

