【发布时间】:2021-08-23 16:47:26
【问题描述】:
我有类似以下的情况:
all:
hosts:
host1:
num: 3
host2:
num: 4
host3:
num: 2
我想将一个文件模板化到主机,该文件应该从 1 开始在每个主机上逐步聚合值 num。
例如对于 host1,新变量/文件的内容 from 应该是 1,对于 host2 它应该是 4 (1+3),对于 host3 8 (4+4)。但执行顺序并不重要——它也可能是:host3 1、host1 3 (1+2)、host2 6 (3+3)。所以变量num 基本上说明了主机将处理多少项目,我的问题的目标是给每个主机一个专用的数字范围,即[from,from+num-1]。
编辑:我已经进一步考虑过,这也可以预先计算。基本上我想从 [3,4,2] 到 [0,3,7](或 [1,4,8])。很遗憾,我找不到可以执行此操作的 Jinja2 过滤器。
【问题讨论】:
-
也许你可以使用事实委托docs.ansible.com/ansible/latest/user_guide/…
-
不知道如何获取Ordering execution based on inventory排序的主机列表。恐怕这是不可能的。如果是这样,您的问题将无法解决。当然,您可以使用递增的值创建列表或字典。但是,您永远无法确定主机的顺序。
-
@VladimirBotka 实际上这与执行顺序无关,它可以是主机同意的任何顺序。所以这也可以在控制器机器上预先计算。基本上我只想将数组 [a,b,c] 减少/映射到 [1, a+1, a+b+1]。
-
在这种情况下,您可能还想“减少”问题。
标签: ansible