ansible / ansible.utils / 4.0.0 / filter / replace_keys Replaces specific keys with their after value from a data recursively. | "added in version" 2.5.0 of ansible.utils" Authors: Sagar Paul (@KB-perByte)ansible.utils.replace_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 replaces specific keys with their after value from a data recursively.
Matching parameter defaults to equals unless C(matching_parameter) is explicitly mentioned.
Using the parameters below- C(data|ansible.utils.replace_keys(target([....])))
# example.yaml # interfaces: # - interface_name: eth0 # enabled: true # duplex: auto # speed: auto # - interface_name: eth1 # description: Configured by Ansible - Interface 1 # mtu: 1500 # speed: auto # duplex: auto # is_enabled: true # vifs: # - vlan_id: 100 # description: Eth1 - VIF 100 # mtu: 400 # is_enabled: true # - vlan_id: 101 # description: Eth1 - VIF 101 # is_enabled: true # - interface_name: eth2 # description: Configured by Ansible - Interface 2 (ADMIN DOWN) # mtu: 600 # is_enabled: false # Playbook - name: replace keys with specified keys dict/list to dict ansible.builtin.set_fact: data: '{{ interfaces }}'
- debug: msg: >- {{ data|ansible.utils.replace_keys(target=[{'before':'interface_name', 'after':'name'}, {'before':'is_enabled', 'after':'enabled'}]) }}
# Output # TASK [replace keys with specified keys dict/list to dict] ************************* # ok: [localhost] => { # "ansible_facts": { # "data": [ # { # "duplex": "auto", # "enabled": true, # "interface_name": "eth0", # "speed": "auto" # }, # { # "description": "Configured by Ansible - Interface 1", # "duplex": "auto", # "interface_name": "eth1", # "is_enabled": true, # "mtu": 1500, # "speed": "auto", # "vifs": [ # { # "description": "Eth1 - VIF 100", # "is_enabled": true, # "mtu": 400, # "vlan_id": 100 # }, # { # "description": "Eth1 - VIF 101", # "is_enabled": true, # "vlan_id": 101 # } # ] # }, # { # "description": "Configured by Ansible - Interface 2 (ADMIN DOWN)", # "interface_name": "eth2", # "is_enabled": false, # "mtu": 600 # } # ] # }, # "changed": false # } # 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: # - interface_name: eth0 # enabled: true # duplex: auto # speed: auto # - interface_name: eth1 # description: Configured by Ansible - Interface 1 # mtu: 1500 # speed: auto # duplex: auto # is_enabled: true # vifs: # - vlan_id: 100 # description: Eth1 - VIF 100 # mtu: 400 # is_enabled: true # - vlan_id: 101 # description: Eth1 - VIF 101 # is_enabled: true # - interface_name: eth2 # description: Configured by Ansible - Interface 2 (ADMIN DOWN) # mtu: 600 # is_enabled: false # Playbook - name: replace keys with specified keys dict/list to dict ansible.builtin.set_fact: data: '{{ interfaces }}'
- debug: msg: >- {{ data|ansible.utils.replace_keys(target=[{'before':'name', 'after':'name'}, {'before':'enabled', 'after':'enabled'}], matching_parameter= 'ends_with') }}
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.replace_keys(target([....]))), in this case C(config_data) represents this option. required: true type: raw target: description: Specify the target keys to replace in list of dictionaries format containing before and after key value. elements: dict required: true suboptions: after: description: after attribute key [change to] type: str before: description: before attribute key [to change] type: str type: list matching_parameter: choices: - starts_with - ends_with - regex description: Specify the matching configuration of target keys and data attributes. type: str