如何在Ansible中对不同主机的变量进行相加

  • 本文关键字:变量 主机 Ansible ansible
  • 更新时间 :
  • 英文 :


我有一个类似于下面的情况:

all:
hosts:
host1:
num: 3
host2:
num: 4
host3:
num: 2

我想给主机模板一个文件,它应该在每个主机上一步一步地聚合从1开始的值num

例如,对于host1,新变量/文件from的内容应该是1,对于host2应该是4(1+3),对于host3应该是8(4+4)。但是执行顺序并不重要——它也可以是:host31, host13(1+2), host26(3+3)。因此,变量num基本上说明了主机将处理多少项,我的问题的目标是给每个主机一个专用的数字范围,这将是[from,from+num-1]

编辑:我已经进一步考虑过了,这也可以是预先计算的。基本上我想从[3,4,2]到[0,3,7](或[1,4,8])。不幸的是,我找不到这样做的Jinja2过滤器。

问:,减少/地图数组(a, b, c) (1 + 1 + b + 1],

A: map不附加地应用过滤器。恐怕需要一次迭代。例如,给定列表

l: [10, 20, 30]

创建项目并连接新列表

- set_fact:
l2: "{{ l2|d([]) + [l[0:(item)]|sum + 1] }}"
loop: "{{ range(0, l|length) }}"

l2:
- 1
- 11
- 31

当然,如果你想一步减少列表,你可以写一个过滤器。

最新更新