我有这样一个变量:
apps:
- {name: kapitalism, extension: .war}
- {name: socialism, extension: .war}
- {name: somethingelse, extension: .ear}
Run Code Online (Sandbox Code Playgroud)
我需要根据它制作另一张,其中不会包括某些列表。我正在尝试这个:
- name: Reject this please
set_fact:
apps: "{{ apps | map(attribute='name') | reject('search',item.name) | list }}"
when: "item.name.find('socialism') != -1"
with_items: "{{ apps }}"
Run Code Online (Sandbox Code Playgroud)
但在这里我遇到了这样一个问题,扩展参数丢失了,我得到了变量:
apps: [u'kapitalism', u'somethingelse']
Run Code Online (Sandbox Code Playgroud)
如何创建这样的变量:
apps:
- {name: kapitalism, extension: .war}
- {name: somethingelse, extension: .ear}
Run Code Online (Sandbox Code Playgroud)
?
下面的剧
- hosts: localhost
vars:
apps2: []
apps:
- {name: A, extension: .ab}
- {name: B, extension: .ab}
- {name: C, extension: .c}
tasks:
- set_fact:
apps2: "{{ apps2 + [item] }}"
loop: "{{ apps }}"
when: item.name != 'C'
- debug:
var: apps2
Run Code Online (Sandbox Code Playgroud)
给出(删节):
apps2:
- extension: .ab
name: A
- extension: .ab
name: B
Run Code Online (Sandbox Code Playgroud)
通过rejectattr可以达到相同的结果
- set_fact:
apps2: "{{ apps|rejectattr('name', 'match', '^C$') }}"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9412 次 |
最近记录: |