Ansible with_items a second list as condition

Viewed 71

I have a full list of users that I create on every system. How can I make a condition for every system to create users only defined in the group_vars variable system_users?

vars: users.yml

users:
  user1:
    username: user1
    password: "example"
  user2:
    username: user2
    password: "example"
  user3:
    username: user3
    password: "example"

group_var: dev-systems.yml

system_users:
  - "user1"
  - "user2"

task: main.yml

- name: Create users and change password
  user:
    name: "{{ users[item].username }}"
    password: "{{ users[item].password }}"
    shell: /bin/bash
    state: present
    update_password: on_create
  become: true
  with_items: "{{ users }}"

hosts

[dev-systems]
example-system.local
1 Answers

Try this

- name: Create users and change password
  user:
    name: "{{ item.username }}"
    password: "{{ item.password }}"
    shell: /bin/bash
    state: present
    update_password: on_create
  become: true
  loop: "{{ system_users|map('extract',users)|list }}"
Related