Reputation: 21
I have a list of dictionaries
member:
- name: test2
orig: test2
- name: test1
orig: test1
and would like to remove the orig key and value from all dictionaries in the list.
- name: Print Firewall Group Member
debug:
msg: "{{ item }}"
loop: "{{ member }}"
TASK [Print Firewall Group Member] *****************************************************************************************
ok: [fortigate01] => (item={'name': 'test2', 'orig': 'test2'}) => {
"msg": {
"name": "test2",
"orig": "test2"
}
}
ok: [fortigate01] => (item={'name': 'test1', 'orig': 'test1'}) => {
"msg": {
"name": "test1",
"orig": "test1"
}
}
Upvotes: 2
Views: 683
Reputation: 68034
Update
Since community.general 9.1.0 use filters:
The below declarations
names: "{{ member | community.general.remove_keys(target=['orig'])}}"
names: "{{ member | community.general.keep_keys(target=['name'])}}"
names: "{{ member | ansible.utils.remove_keys(target=['orig']) }}"
give the same results
names:
- name: test2
- name: test1
Notes
- hosts: localhost
vars:
member:
- {name: test2, orig: test2}
- {name: test1, orig: test1}
names1: "{{ member | community.general.remove_keys(target=['orig'])}}"
names2: "{{ member | community.general.keep_keys(target=['name'])}}"
names3: "{{ member | ansible.utils.remove_keys(target=['orig']) }}"
tasks:
- debug:
var: names1
- debug:
var: names2
- debug:
var: names3
shell> ansible-galaxy collection install community.general --upgrade
Original answer
member:
- name: test2
orig: test2
- name: test1
orig: test1
Declare the variable
names: "{{ member | ansible.utils.remove_keys(target=['orig']) }}"
gives
names:
- name: test2
- name: test1
names: "{{ member | ansible.utils.keep_keys(target=['name']) }}"
names: "{{ member | json_query('[].{name: name}') }}"
Example of a complete playbook for testing
- hosts: localhost
vars:
member:
- name: test2
orig: test2
- name: test1
orig: test1
names: "{{ member | ansible.utils.remove_keys(target=['orig']) }}"
name2: "{{ member | ansible.utils.keep_keys(target=['name']) }}"
name3: "{{ member | json_query('[].{name: name}') }}"
tasks:
- debug:
var: names
- debug:
var: name2
- debug:
var: name3
Upvotes: 3