如何在执行剧本时在命令行中添加多个清单文件

How to add multiple inventory files in command line while executing a playbook

我有一本包含两个不同剧本的剧本

Sample.yml
    - name : Play1
      hosts: Host1
      tasks:
       ...
    - name: Play2
      hosts: Host2
      tasks:
       ...

我需要 运行 这个剧本有两个不同的主机(Host1 和 Host2),这两个不同的主机存在于两个单独的文件中(inventory/ 目录下的 Hostfile1 和 Hostfile2).

inventory/
   Hostfile1
   Hostfile2
   .
   .
   HostfileN

我想知道如何在 运行 编写剧本时包含两个不同的主机文件。我知道通过在命令行中包含整个文件夹 (inventory/) 我们可以实现这一点,但是我在 inventory/ 文件夹中有很多主机文件,所以这个选项将加载未使用的主机文件。

我试过 运行 如下所示

ansible-playbook -i inventory/Hostfile1,Hostfile2 sample.yml

但这没有用。那么,有人知道如何通过在命令行中提供多个主机文件来 运行 剧本吗?

只需多次提供-i

ansible-playbook -i inventory/Hostfile1 -i inventory/Hostfile2 sample.yml

我想澄清一下上面的答案。该提案不起作用的原因是,如果 ansible 在 -i 标志的值中看到一个 ',',它会将其视为清单列表。使用您的示例:

ansible-playbook -i inventory/Hostfile1,Hostfile2 sample.yml

Ansible 将尝试 运行 机器 "inventory/Hostfile1" 和 "Hostfile2" 上的剧本 "sample.yml"。

这就是为什么您必须多次指定 -i 的原因。