2017-12-18 20 views
2

Anabilities Playbookのオブジェクトの配列を別のオブジェクトの配列にマップする方法はありますか?我々は、ソース・アレイ・ビーイングを持っているとしましょう:Ansible - オブジェクトの配列をオブジェクトの別の配列にマップする

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

そして、私たちが望むことのは言わせて、最初の配列内のオブジェクトに基づいて、異なる配列を取得することです:

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

これは、ANでなんとかなります要素テンプレート:

const: 1 
var: {{ value }} 

このようなテンプレートを配列のすべての要素に適用する方法はありますか?私は適切なmapフィルタを見つけられませんでした。lookup('template', ...)mapの内部では使用できません。

+0

ご確認くださいhttps://stackoverflow.com/questions/42152192/ansible-how-to-apply-defaults-to-each-complex-arguments-of-a-list:これは私がそれをやった方法です/ 42152622#42152622 –

答えて

0

コンスタンチン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 }} 
関連する問題