将字典附加到 Ansible 中的循环内的数组

tav*_*999 0 ansible

你如何从 '''with_items''' 循环中将 dict 附加到数组?

  - set_fact:
      my_dict:
        name:  "{{ (item.content|from_json).name.0.value }}"
        id:    "{{ (item.content|from_json).nid.0.value }}"
        email: "{{ (item.content|from_json).mail.0.value }}"
      effort_members: "{{ effort_members }} + [ {{ my_dict }} ]"
    with_items: "{{ members_obj.results }}"
Run Code Online (Sandbox Code Playgroud)

以上不起作用,但它很好地代表了我想要完成的工作。如果我提前定义了 dict,这个 append 可以正常工作,但它正在附加相同的 dict。

tec*_*raf 7

错误:

  • 您缺少default第一次迭代的过滤器

  • my_dict不必要地为每次迭代定义- 改用辅助变量

  • 您的模板严重损坏,它创建了一个带有+内部的字符串而不是连接列表

固定代码:

- with_items: "{{ members_obj.results }}"
  set_fact:
    effort_members: "{{ effort_members|default([]) + [ my_dict ] }}"
  vars:
    my_dict:
      name:  "{{ (item.content|from_json).name.0.value }}"
      id:    "{{ (item.content|from_json).nid.0.value }}"
      email: "{{ (item.content|from_json).mail.0.value }}"
Run Code Online (Sandbox Code Playgroud)