匹配时的ansible过滤器列表

时间:2017-11-08 05:36:35

标签: ansible

使用groups.all返回清单中包含所有主机的列表,是否可以将包含唯一字符串的列表提取到另一个列表中。

当我调试groups.all时,我会在清单中找到包含所有主机的列表。

"groups.all": [
    "host-1-unique",
    "host-2",
    "host-3",
    "host-4-unique",
    "host-5",
    "host-6-unique",
    "host-7"
],

在我的main.yml

- set_fact:
  new_list: []

- set_fact: "{{ new_list }} + [ '{{ item }}' ]"
  with_items: groups.all
  when: 'unique' in groups.all

我得到以下结果:

{
    "skipped": true,
    "_ansible_no_log": false,
    "skip_reason": "Conditional result was False",
    "_ansible_item_result": true,
    "item": "groups.all",
    "changed": false
}

有谁知道为什么会跳过这个? 如何从列表中提取,返回具有唯一字符串的元素列表?

1 个答案:

答案 0 :(得分:3)

您可能想了解Jinja2 filters(内置和Ansible提供)。

- set_fact:
    new_list: "{{ groups['all'] | select('search','unique') | list }}"
相关问题