1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00
Files
til/ansible/loop-over-a-list-of-dictionaries.md

1.0 KiB

Loop Over A List Of Dictionaries

Ansible's loop can iterate over a list of dictionaries in a task. That task will be evaluated for each item in that list. Since each item is a dictonary, we can access the fields on the item directory with dot notation — item.name.

Here is what this would look like for a task that is setting up authorized SSH keys.

---
- hosts: all
  vars:
    dev_users:
      - name: alice
        ssh_key_url: https://github.com/dev1.keys
      - name: bob
        ssh_key_url: https://github.com/dev2.keys
  tasks:
    - name: Set authorized keys taken from url
      ansible.posix.authorized_key:
        user: "{{ item.name }}"
        state: present
        key: "{{ item.ssh_key_url }}"
      loop: "{{ dev_users }}"

Notice the loop over the dev_users variable gives us access to an item in the task. Because each item has a name and an ssh_key_url, we can access those fields in the task.

source