【问题标题】:Ansible: restricting group vars with groups of groupsAnsible:使用组限制组变量
【发布时间】:2017-07-26 09:15:11
【问题描述】:

我有一个类似的 hosts 文件:

[myhosts]
192.168.0.1
192.168.0.2

[group1:children]
myhosts

[group2:children]
myhosts

group1group2(顺便说一下 myhosts)的 group vars 文件一起声明一些常见的变量,但具有不同的值。

这是我的目录布局(遵循best pratices):

hosts
main.yml
group_vars/
    group1.yml
    group2.yml
    myhosts.yml

因此,当主机同时属于两个组时,ansible 会自动包含 group1group2 的两个 group vars 文件。

为了记录,我在我的 playblook 上调用 ansible 并使用以下 pattern 作为目标(在命令行中指定):

192.168.0.1:&group1

考虑到这一点,我怎样才能使 ansible 仅包含与 group1 关联的 group vars 文件(以及子组 myhosts)?这可能吗?

另一种解决方案是将 group1group2group vars 文件重命名为不同的名称(以防止自动包含)并包含那些在单独的“代理”剧本中,特定于每个子组,但这对我来说似乎不太干净。

注意:目前情况并非如此,但在未来,group1 和 group2 很可能很少有不共同的主机。

【问题讨论】:

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


    【解决方案1】:

    play 的 hosts 值是一种设置 play 目标主机的方法,它不是这些主机上的 view
    如果主机属于多个组,它将始终从所有这些组的 group_vars 加载 vars,而不仅仅是剧中指定的组。

    【讨论】:

    • 好的,所以我需要做我在问题中写的内容?即有两个剧本,每个剧本都包含/定义我想要的具体变量
    • 我真的没有解决办法。您必须重新组织您的组,以便主机不属于具有相同变量的不同值的 2 个组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多