如何在执行剧本时在命令行中添加多个广告资源文件

时间:2019-02-27 11:27:33

标签: ansible ansible-2.x ansible-inventory

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

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

我需要使用两个不同的主机( Host1和Host2 )运行此剧本,并且这两个不同的主机存在于清单中的两个单独的文件( Hostfile1和Hostfile2 )中/目录。

inventory/
   Hostfile1
   Hostfile2
   .
   .
   HostfileN

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

我试图像下面那样跑

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

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

2 个答案:

答案 0 :(得分:1)

只需多次提供-i

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

答案 1 :(得分:1)

我想澄清以上答案。该提案不起作用的原因是,如果ansible在-i标志的值中看到“,”,则将其视为库存清单。以您的示例为例:

ansible-playbook -i目录/ Hostfile1,Hostfile2 sample.yml

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

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