如何在执行剧本时在命令行中添加多个清单文件
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 的原因。
我有一本包含两个不同剧本的剧本
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 的原因。