如何从列表中获取项目并在 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
我有以下任务,我的目标是将大于 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