我正在寻找一个事实,它的组成部分是字典,但是在下面的代码中 my_dict_var
string
尽管我希望将其作为字典进行渲染。
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( my_dcit_var ) }}"
vars:
my_dcit_var: { "{{ item }}" : ['some string value'] }
with_items:
- 1
- 2
- 3
我期望最终结果应该是。{1: ['some string value'], 2: ['some string value'], 3: ['some string value']}
有人可以指出我的错误。
该部件{ "{{ item }}" : ['some string value'] }
创建一个与"{{ item }}"
文字字符串具有相同键的字典,而不是循环中每个项目的变量。因此,key:value
每次将dict对与最新的dict对覆盖。这是解决方法,
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( my_dict_var ) }}"
vars:
my_dict_var: "{{ { item : ['some string value'] } }}"
with_items:
- 1
- 2
- 3
或者,简单地
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( { item: ['some string value'] } ) }}"
with_items:
- 1
- 2
- 3
Ansible还建议在可能的地方使用loop
代替with_
查找。这是使用循环和指定的key:value对的示例。
- set_fact:
my_fact: "{{ my_fact | default({}) | combine( { item.key: item.val } ) }}"
loop:
- { key: 1, val: ['some string value1'] }
- { key: 2, val: ['some string value2'] }
- { key: 3, val: ['some string value3'] }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句