如何从列表中获取项目并在 Ansible 中创建新项目

How to get items out of a list and create a new one in Ansible

我有以下任务,我的目标是将大于 5 的值放入新列表 (new_list):

- name: Run with items greater than 5
  ansible.builtin.command: echo {{ item }}
  loop: [ 0, 2, 4, 6, 8, 10 ]
  when: item > 5
  register: new_list

- debug:
    var: new_list

但是我得到以下输出,

此处为实际输出 https://anotepad.com/notes/iqrpfkxk(post 的输出太大)

我希望得到 [6,8,10],基本上我如何摆脱所有额外的输出。

您可以使用 set_fact 将大于 5 的值存储到一个新数组 (new_list) 中。为此,任务可以有条件地执行。

示例:

  tasks:
  - set_fact:
      new_list: "{{ new_list|default([]) + [item] }}"
    when: item > 5
    loop: [ 0, 2, 4, 6, 8, 10 ]
  - debug:
      var: new_list

产生:

    "new_list": [
        6,
        8,
        10
    ]

更新:

虽然上面的例子不需要。有一些关于如何限制循环输出的文档 here.

Select 项。例如

  - debug:
      var: item
    loop: "{{ [ 0, 2, 4, 6, 8, 10 ]|select('gt', 5)|list }}"

给出(删节)

  item: 6
  item: 8
  item: 10