List Ansible构建动态列表
我正在努力使用语法动态地构建和添加到列表中。我想在一个ansible行中完成它,而不必使用jinja2模板。我一直在胡闹,但下面是我开始的地方。错误就在设定事实的那一行List Ansible构建动态列表,list,ansible,List,Ansible,我正在努力使用语法动态地构建和添加到列表中。我想在一个ansible行中完成它,而不必使用jinja2模板。我一直在胡闹,但下面是我开始的地方。错误就在设定事实的那一行 - name: Assign data to the correct list based on the meta value. set_fact: "{{ next_reference.list_name }}": "{{ next_reference.list_name|defaul
- name: Assign data to the correct list based on the meta value.
set_fact:
"{{ next_reference.list_name }}": "{{ next_reference.list_name|default([]) + [ input_data ] }}"
loop: "{{ reference_list }}"
loop_control:
loop_var: next_reference
when: input_data.meta == next_reference.meta
reference_list:
- meta: "test1"
list_name: "test1_list"
- meta: "test2"
list_name: "test2_list"
- meta: "test3"
list_name: "test3_list"
input_data_list:
- meta: "anp"
value1: "one"
value2: "two"
感谢您的帮助,在此期间,您可能不得不选择jinja2路线。如果没有Jinja,则无法在Ansible中间接声明或修改变量。相反,一个合适的数据结构可以达到这个目的,例如
t:
t1:{{test1_list}默认([])}+{{input_data}
t2:{{test2_list}默认([])}+{{input_data}
t3:{{test3_list}默认值([])}+{{input_data}}”
谢谢您的回复。这个问题提醒我们,jinja2和ansible是简单的工具,而不是编程语言,所以关键是要简单地思考
如果要更改字典列表中的数据。最好的方法是浏览当前列表,从要创建新词典的词典中取出数据,将新数据放入词典中或对其进行修改。把这本新词典放在一张单子上。
使用rejectattr从当前列表中删除词典。使用简单的jinja2模板重新组合新列表和旧列表