1

有一个如下所示的配置文件:

one:
  some: 'conf'

foo:
  -
    bar:
      - 'one'
      - 'two'
      - 'three'
  -
    bar:
      - 'one'
      - 'four'
      - 'five'

我想得到一个包含所有列表字符串的bar列表。我做了这个任务:

- name: My amazing task
  debug: var=item
  with_flattened:
    - "{{ foo | map(attribute='bar') | list }}"
    #- Another lists here, but removed for simplicity 

这是问题所在;结果列表如下所示:

[{"one": "some": "conf"}, "two", "three", {"one": "some": "conf"}, "four", "five"]

Ansible 似乎解释了之前设置的“one”变量,而忽略了我期待一个字符串的事实。

我做错了什么?如何从条形变量配置中获取字符串列表?

(我使用 Ansible 1.9)

4

1 回答 1

2

为了防止这个问题,循环中的裸变量with_在最近的 Ansible 版本中不起作用。

要在您的情况下处理它,请使用:

with_items: "{{ foo | map(attribute='bar') | sum(start=[]) | list }}"

sum(start=[])在这里制作一个列表列表。

于 2017-02-13T18:16:47.313 回答