如何从 Ansible 列表中删除项目?

How to remove item from Ansible list?

我需要从列表中删除一些项目

"my_list_one": [
    "item1",
    "item2",
    "item3"
] }

我需要删除包含字符串“2”的项目。结果,我需要 list as

"my_list_one": [
    "item1",
    "item3"
] }

我是怎么实现的?

@techraf answer 的更好变体:

{{ my_list_one | reject('search','2') | list }}

您也可以根据需要使用pop()remove()

pop(n) 删除列表的第 n 个元素(从 0 开始)。负 n 值从列表末尾开始计数。

- debug:
    msg: |
      {% set result = [] %}
      {% for i in range(0, 30, 5) %}
      {%   set _ = result.append(i) %}
      {% endfor %}
      {% set _ = result.pop(3) %}
      {{ result }}

-> 0, 5, 10, 20, 25, 30

- debug:
    msg: |
      {% set result = [] %}
      {% for i in range(0, 30, 5) %}
      {%   set _ = result.append(i) %}
      {% endfor %}
      {% set _ = result.pop(-1) %}
      {{ result }}

-> 0, 5, 10, 15, 20, 25

remove(item) 从列表中删除 item(如果存在):

- debug:
    msg: |
      {% set result = [] %}
      {% for i in range(0, 30, 5) %}
      {%   set _ = result.append(i) %}
      {% endfor %}
      {% set _ = result.remove(20) %}
      {{ result }}

-> 0, 5, 10, 15, 25, 30