使用Ansible,有没有办法为列表项设置默认值? 例如,如果我在group_vars文件中定义一个列表,如下所示:
list1:
item1:
a: 1
item2:
a: 2
b: a2
...
#the list can contain more than two items.
然后在某个角色我想使用它,但是如果没有设置list1.item1.b
,我希望它使用计算的默认值(例如{{ "a" + list1.item1.a }}
之类的东西)。
我可以在角色中的每个任务上设置使用default
过滤器,但我想为角色设置一次,然后在整个角色中使用它。
有没有办法实现这个目标?
答案 0 :(得分:0)
我认为你最好的选择是定义第二个变量并在你的任务中使用它:
item_b: "{{ list1.item1.b | default('a' + list1.item1.a) }}"
答案 1 :(得分:0)
让我们说你有角色A
---
name: execute step 1
copy:
src="{{list1_item1_a_parameter}}"
dest="{{list1_item2_b_parameter}}"
name: execute step 2
copy:
src="{{list1_item1_a_parameter}}"
dest="{{list1_item2_a_parameter}}"
现在,让我们来看看你如何称呼这个角色
---
...
roles:
- { role: A,
list1_item1_a_parameter: '{{list1.item1.a.parameter | default("some default") }}'
list1_item2_a_parameter: '{{list1.item2.a.parameter | default("some default") }}'
list1_item2_b_parameter: '{{list1.item2.a.parameter | default("some default") }}'
}
您也可以在角色内的vars / main.yml中设置这些默认值。