ansible / ansible.utils / 4.0.0 / filter / remove_keys Remove specific keys from a data recursively. | "added in version" 2.5.0 of ansible.utils" Authors: Sagar Paul (@KB-perByte)ansible.utils.remove_keys (4.0.0) — filter
Install with ansible-galaxy collection install ansible.utils:==4.0.0
collections: - name: ansible.utils version: 4.0.0
This plugin removes specific keys from a provided data recursively.
Matching parameter defaults to equals unless C(matching_parameter) is explicitly mentioned.
Using the parameters below- C(data|ansible.utils.remove_keys(target([....])))
# example.yaml # interfaces: # - name: eth0 # enabled: true # duplex: auto # speed: auto # note: # - Connected green wire # - name: eth1 # description: Configured by Ansible - Interface 1 # mtu: 1500 # speed: auto # duplex: auto # enabled: true # note: # - Connected blue wire # - Configured by Paul # vifs: # - vlan_id: 100 # description: Eth1 - VIF 100 # mtu: 400 # enabled: true # comment: Needs reconfiguration # - vlan_id: 101 # description: Eth1 - VIF 101 # enabled: true # - name: eth2 # description: Configured by Ansible - Interface 2 (ADMIN DOWN) # mtu: 600 # enabled: false # Playbook - name: remove multiple keys from a provided data ansible.builtin.set_fact: data: '{{ interfaces }}'
- debug: msg: '{{ data|ansible.utils.remove_keys(target=[''note'', ''comment'']) }}'
# Output # TASK [remove multiple keys from a provided data] *************************************** # ok: [localhost] => { # "ansible_facts": { # "data": [ # { # "duplex": "auto", # "enabled": true, # "name": "eth0", # "note": [ # "Connected green wire" # ], # "speed": "auto" # }, # { # "description": "Configured by Ansible - Interface 1", # "duplex": "auto", # "enabled": true, # "mtu": 1500, # "name": "eth1", # "note": [ # "Connected blue wire", # "Configured by Paul" # ], # "speed": "auto", # "vifs": [ # { # "comment": "Needs reconfiguration", # "description": "Eth1 - VIF 100", # "enabled": true, # "mtu": 400, # "vlan_id": 100 # }, # { # "description": "Eth1 - VIF 101", # "enabled": true, # "vlan_id": 101 # } # ] # }, # { # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", # "enabled": false, # "mtu": 600, # "name": "eth2" # } # ] # }, # "changed": false # } # Read vars_file 'example.yaml' # TASK [debug] ******************************************** # ok: [localhost] => { # "msg": [ # { # "duplex": "auto", # "enabled": true, # "name": "eth0", # "speed": "auto" # }, # { # "description": "Configured by Ansible - Interface 1", # "duplex": "auto", # "enabled": true, # "mtu": 1500, # "name": "eth1", # "speed": "auto", # "vifs": [ # { # "description": "Eth1 - VIF 100", # "enabled": true, # "mtu": 400, # "vlan_id": 100 # }, # { # "description": "Eth1 - VIF 101", # "enabled": true, # "vlan_id": 101 # } # ] # }, # { # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", # "enabled": false, # "mtu": 600, # "name": "eth2" # } # ] # } # example.yaml # interfaces: # - name: eth0 # enabled: true # duplex: auto # speed: auto # note: # - Connected green wire # - name: eth1 # description: Configured by Ansible - Interface 1 # mtu: 1500 # speed: auto # duplex: auto # enabled: true # note: # - Connected blue wire # - Configured by Paul # vifs: # - vlan_id: 100 # description: Eth1 - VIF 100 # mtu: 400 # enabled: true # comment: Needs reconfiguration # - vlan_id: 101 # description: Eth1 - VIF 101 # enabled: true # - name: eth2 # description: Configured by Ansible - Interface 2 (ADMIN DOWN) # mtu: 600 # enabled: false # Playbook - name: remove multiple keys from a provided data ansible.builtin.set_fact: data: '{{ interfaces }}'
- debug: msg: >- {{ data|ansible.utils.remove_keys(target=['^note$', '^comment'], matching_parameter= 'regex') }}
data: description: - This option represents a list of dictionaries or a dictionary with any level of nesting data. - For example C(config_data|ansible.utils.remove_keys(target([....]))), in this case C(config_data) represents this option. required: true type: raw target: description: Specify the target keys to remove in list format. elements: str required: true type: list matching_parameter: choices: - starts_with - ends_with - regex description: Specify the matching configuration of target keys and data attributes. type: str