【问题标题】:ansible filter list when matches匹配时的ansible过滤器列表
【发布时间】:2017-11-08 14:10:52
【问题描述】:

使用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
}

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

【问题讨论】:

    标签: ansible


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2023-03-22
      • 1970-01-01
      • 2012-10-27
      • 2018-02-18
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多