【问题标题】:Jinja: Iterate list to create array of yaml elementsJinja:迭代列表以创建 yaml 元素数组
【发布时间】:2017-08-04 11:24:34
【问题描述】:

我在 ansible playbook 中有以下变量

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 %}
]

有什么办法吗?我有点迷茫。

【问题讨论】:

    标签: templates ansible yaml jinja2


    【解决方案1】:

    据我所知,要使其正常工作,您应该将第二个 var 设计为 python-repr/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 }}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多