ansible / ansible.builtin / v2.16.0 / lookup / subelements traverse nested key from a list of dictionaries | "added in version" 1.4 of ansible.builtin" Authors: Serge van Ginderachter (!UNKNOWN) <serge@vanginderachter.be>ansible.builtin.subelements (v2.16.0) — lookup
pip
Install with pip install ansible-core==2.16.0
Subelements walks a list of hashes (aka dictionaries) and then traverses a list with a given (nested sub-)key inside of those records.
- name: show var structure as it is needed for example to make sense hosts: all vars: users: - name: alice authorized: - /tmp/alice/onekey.pub - /tmp/alice/twokey.pub mysql: password: mysql-password hosts: - "%" - "127.0.0.1" - "::1" - "localhost" privs: - "*.*:SELECT" - "DB1.*:ALL" groups: - wheel - name: bob authorized: - /tmp/bob/id_rsa.pub mysql: password: other-mysql-password hosts: - "db1" privs: - "*.*:SELECT" - "DB2.*:ALL" tasks: - name: Set authorized ssh key, extracting just that data from 'users' ansible.posix.authorized_key: user: "{{ item.0.name }}" key: "{{ lookup('file', item.1) }}" with_subelements: - "{{ users }}" - authorized - name: Setup MySQL users, given the mysql hosts and privs subkey lists community.mysql.mysql_user: name: "{{ item.0.name }}" password: "{{ item.0.mysql.password }}" host: "{{ item.1 }}" priv: "{{ item.0.mysql.privs | join('/') }}" with_subelements: - "{{ users }}" - mysql.hosts - name: list groups for users that have them, don't error if groups key is missing ansible.builtin.debug: var=item loop: "{{ q('ansible.builtin.subelements', users, 'groups', {'skip_missing': True}) }}"
_terms: description: tuple of list of dictionaries and dictionary key to extract required: true skip_missing: default: false description: - Lookup accepts this flag from a dictionary as optional. See Example section for more information. - If set to V(True), the lookup plugin will skip the lists items that do not contain the given subkey. - If set to V(False), the plugin will yield an error and complain about the missing subkey.
_list: description: list of subelements extracted