Ansible - 将对象数组映射到不同的对象数组
有没有办法将Ansible Playbook中的对象数组映射到不同的对象数组?比方说,我们有一个源阵列之中:Ansible - 将对象数组映射到不同的对象数组
arr: - value: a
- value: b
- value: c
而我们想要的是让基于第一阵列中的对象不同的数组,让我们说:
arr2: - const: 1
var: a
- const: 1
var: b
- const: 1
var: c
这将是可行的利用元素模板:
const: 1 var: {{ value }}
有没有办法将这样的模板应用到数组中的每个元素?我还没有找到合适的map
过滤器,因为lookup('template', ...)
不能在map
内部使用。
回答:
正如Konstantin Suvorov在评论中提到的那样,它可以使用递归数组构建完成。这是我做的:
#role test ---
- hosts: localhost
gather_facts: no
vars:
arr:
- value: a
- value: b
- value: c
tasks:
- set_fact:
arr2: "{{ (arr2 | default([])) + [ lookup('template', 'template.yaml.j2') | from_yaml ] }}"
with_items: "{{ arr }}"
- debug:
msg: "{{ arr2 }}"
#template.yaml.j2
const: 1
var: {{ item.value }}
以上是 Ansible - 将对象数组映射到不同的对象数组 的全部内容, 来源链接: utcz.com/qa/262307.html