这是一种常见的情况,但是在Ansible中似乎并不简单。
让我们假设一个组的层次结构: linux主机: 应用程序主机: foobar-application-hosts: foobar01
现在,对于每个组,我们都希望定义一组cron作业。
对于linux主机,在所有linux主机上运行的作业。 对于应用程序主机,仅在应用程序主机上运行的作业。 对于foobar-applciation-hosts,只能在foobar-applcation-hosts上运行的作业。
例如,变量名是cronjobs
,它是cron模块设置的列表。
默认情况下,foobar-application-hosts会掩盖其上方任何内容的设置。不好。
我看不到一种简单的合并方法(在特定级别上)。所以我想,也许是Ansible公开了主机在运行期间所属组的各个组变量。有组,有group_names,但是我没有看到与hostvars相对应的groupvars。
这似乎暗示我要么习惯了在组上循环,要么动态导入vars(如果可能),然后自己进行合并的混合搭配。也许把其中的一些发挥作用。但这感觉就像是一种骇客。还有另一种方法吗?
答案 0 :(得分:0)
Ansible意义上的组是主机上的“标签”。主机可以属于多个组。因此,conjobs var应该是一个列表,其长度与主机所在的组数相同。