Ansible-变量分层管理的方法

时间:2018-10-10 19:52:56

标签: ansible

这是一种常见的情况,但是在Ansible中似乎并不简单。

让我们假设一个组的层次结构:    linux主机:      应用程序主机:         foob​​ar-application-hosts:            foob​​ar01

现在,对于每个组,我们都希望定义一组cron作业。

对于linux主机,在所有linux主机上运行的作业。 对于应用程序主机,仅在应用程序主机上运行的作业。 对于foobar-applciation-hosts,只能在foobar-applcation-hosts上运行的作业。

例如,变量名是cronjobs,它是cron模块设置的列表。

默认情况下,foobar-application-hosts会掩盖其上方任何内容的设置。不好。

我看不到一种简单的合并方法(在特定级别上)。所以我想,也许是Ansible公开了主机在运行期间所属组的各个组变量。有组,有group_names,但是我没有看到与hostvars相对应的groupvars。

这似乎暗示我要么习惯了在组上循环,要么动态导入vars(如果可能),然后自己进行合并的混合搭配。也许把其中的一些发挥作用。但这感觉就像是一种骇客。还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

Ansible意义上的组是主机上的“标签”。主机可以属于多个组。因此,conjobs var应该是一个列表,其长度与主机所在的组数相同。