• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Ansible – 将对象数组映射到不同的对象数组

ansible 来源:Bartek Andrzejczak 6次浏览

有没有办法将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 }} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)