- name: store dynamic defaults set_fact: dynamic_defaultuser: home: "{{ ('/var/lib/'+currentuser.key) if (currentuser.value.system|d(True)) else ('/home/'+currentuser.key) }}" - name: apply overrides to current user set_fact: user: "{{ {}|combine(defaultuser, dynamic_defaultuser, currentuser.value|d({}), {'name': currentuser.key} ) }}" - name: "create user ({{ user.name }})" user: name: "{{ user.name }}" generate_ssh_key: "{{ user.genssh }}" ssh_key_type: "{{ user.ssh_key_type }}" group: "{{ user.group }}" groups: "{{ user.groups }}" home: "{{ (user.home) }}" system: "{{ user.system }}" state: "{{ user.state }}" uid: "{{ user.uid|d(omit) }}" password: "{{ user.password }}" shell: "{{ user.shell }}" - name: "setup ssh key(s) ({{ user.name }})" loop: "{{ user.authorized_keys|dict2items }}" authorized_key: user: "{{ user.name }}" key: "{{ item.value }}" comment: "{{ item.key }}"