2017-12-18 6 views
2

Gibt es eine Möglichkeit, ein Array von Objekten in Ansible Playbook einem anderen Array von Objekten zuzuordnen? Lassen Sie uns sagen, dass wir eine Quelle Array Wesen haben:Ansible - Ein Array von Objekten einem anderen Array von Objekten zuordnen

arr: 
    - value: a 
    - value: b 
    - value: c 

Und was wir wollen, ist eine andere Anordnung auf Objekte in der ersten Reihe auf Basis zu bekommen, sagen wir mal:

arr2: 
    - const: 1 
    var: a 
    - const: 1 
    var: b 
    - const: 1 
    var: c 

Dies wird durch eine machbar wäre, Element Vorlage von:

const: 1 
var: {{ value }} 

gibt es eine Möglichkeit, um jedes Element in einem Array eine solche Vorlage anwenden? Ich habe keinen passenden map Filter gefunden, da lookup('template', ...) innerhalb map nicht verwendet werden kann.

+0

Bitte überprüfen https://stackoverflow.com/questions/42152192/ansible-how-to-apply-defaults-to-each-complex-arguments-of-a-list/42152622 # 42152622 –

Antwort

0

Wie Konstantin Suvorov im Kommentar erwähnt, kann es rekursive Array-Erstellung verwendet werden. Dies ist, wie ich es tat:

#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 }} 
Verwandte Themen