2017-08-04 58 views
1

我在ansible劇本金賈:迭代列表來創建YAML元件陣列

var1: "string" 
variable: 
    - name: "{{ var1 }}-xxx" 
    sshKey: "{{ lookup('file', 'temp/xxx.pub') }}" 
    - name: "{{ var1 }}-yyy" 
    sshKey: "{{ lookup('file', 'temp/yyy.pub') }}" 
    - name: "{{ var1 }}-zzz" 
    sshKey: "{{ lookup('file', 'temp/zzz.pub') }}" 

其中,顯然乞求循環以下變量。然而,我創建循環的嘗試是徒勞的。

list: [ 'zzz', 'xxx', 'yyy' ] 
loop: [ 
{% for item in list %} 
- name: "{{ item }}" 
    sshKey: "{{ lookup('file', 'temp/{{ item }}.tmp') }}" 
{% endfor %} 
] 

任何方式來做到這一點?我有點失落。

回答

1

從我所知,這個工作,你應該制定第二個變種是蟒蛇,再版/ JSON:

--- 
- hosts: localhost 
    gather_facts: no 
    vars: 
    my_list: [aaa, bbb, ccc] 
    my_loop: > 
      [ {% for i in my_list %} 
       { 
       'name':'prefix-{{ i }}', 
       'sshKey':'{{ lookup('file','/tmp/'+i) }}' 
       } 
       {% if not loop.last %},{% endif %} 
       {% endfor %} 
      ] 
    tasks: 
    - debug: 
     msg: "{{ my_loop }}" 
+0

的感謝!爲我工作。 – 4c74356b41