Ansible - 创建包含项目和列表的列表名单

时间:2017-09-12 12:51:46

标签: ansible yaml jinja2

我正在尝试在uri body内列出一个列表。但是使用|list不会将列表项追加到新列表中。

我的任务:

uri:
  url: "{{ URL }}"
  method: "POST"
  body:
    policies:
      - "default"
      - "{{ item | selectattr('policy', 'defined') | map(attribute='policy') | list }}"
    body_format: json
  with_items:
    - "{{ policy_config }}"

但是这给了我:

policies:
  - \"default\"
  - \"[u'app1', u'app2']\"

所以它没有追加app1& app2作为新单独的列表项。我该如何解决这个问题?

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

构建单个列表。一个可能的例子:

policies: "{{ ['default'] + item | selectattr('policy', 'defined') | map(attribute='policy') | list }}"

如果您的设置中有json_query,则更短:

policies: "{{ ['default'] + item | json_query('[].policy') }}"