可靠的;使用循环遍历变量
Ansible; using a loop to cycle through variables
我有一个库存,其中设置了很多 host_vars。每个主机将包含不同数量的数据集。
例如
host: host1
ip-addr: 192.0.2.12/24
datasets:
set1:
var1: 'east'
var2: 'west'
set2:
var1: 'north'
var2: 'south'
我可以创建一个循环来计算数据集,但我似乎无法使用它来引用 [varX]:
- name: "test loop"
debug:
msg:
- "{{ item }}"
- "{{ 'datasets.set' + item + '.var1' }}"
- "{{ datasets.set1.var1 }}"
loop: "{{ query('sequence', 'start=1 end='+((datasets|length)|string)) }}"
这似乎是 assemble 我试图引用的变量名称,但 return 不是与之关联的值。手动调用该变量会 return 有趣的值。
ok: [host1] => (item=1) => {
"msg": [
"1",
"datasets.set1.var1",
"east"
]
}
ok: [host1] => (item=2) => {
"msg": [
"2",
"datasets.set2.var1",
"east"
]
}
我正在做的事情是可行的,还是我应该从另一个角度来看待它?
提前致谢。
任务
- debug:
msg: "set{{ item }}.var1 = {{ datasets['set' ~ item].var1 }}"
loop: "{{ range(1, datasets|length+1)|list }}"
给予
"msg": "set1.var1 = east"
"msg": "set2.var1 = north"
我有一个库存,其中设置了很多 host_vars。每个主机将包含不同数量的数据集。
例如
host: host1
ip-addr: 192.0.2.12/24
datasets:
set1:
var1: 'east'
var2: 'west'
set2:
var1: 'north'
var2: 'south'
我可以创建一个循环来计算数据集,但我似乎无法使用它来引用 [varX]:
- name: "test loop"
debug:
msg:
- "{{ item }}"
- "{{ 'datasets.set' + item + '.var1' }}"
- "{{ datasets.set1.var1 }}"
loop: "{{ query('sequence', 'start=1 end='+((datasets|length)|string)) }}"
这似乎是 assemble 我试图引用的变量名称,但 return 不是与之关联的值。手动调用该变量会 return 有趣的值。
ok: [host1] => (item=1) => {
"msg": [
"1",
"datasets.set1.var1",
"east"
]
}
ok: [host1] => (item=2) => {
"msg": [
"2",
"datasets.set2.var1",
"east"
]
}
我正在做的事情是可行的,还是我应该从另一个角度来看待它?
提前致谢。
任务
- debug:
msg: "set{{ item }}.var1 = {{ datasets['set' ~ item].var1 }}"
loop: "{{ range(1, datasets|length+1)|list }}"
给予
"msg": "set1.var1 = east"
"msg": "set2.var1 = north"