如何从列表中取出项目并在 Ansible 中创建一个新项目

时间:2021-01-21 03:31:37

标签: ansible ansible-2.x

我有以下任务,我的目标是将大于 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(输出太大无法发布)

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

2 个答案:

答案 0 :(得分:0)

您可以使用 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 的文档。

答案 1 :(得分:0)

Select 项。例如

 <target name="test">
      <echo>Hello,</echo>
   </target>

给出(删减)

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