base/roles/user/tasks/configure-user.yml

33 lines
1.2 KiB
YAML

---
- name: Ensure user '{{ user.name }}' is {{ user.state }}
ansible.builtin.user:
name: "{{ user.name }}"
state: "{{ user.state }}"
system: "{{ user.system | default(false, true) }}"
home: "{{ user.home | default(omit, true) }}"
create_home: "{{ user.create_home | default(true, true) }}"
comment: "{{ user.comment | default(user.gecos | default(omit, true), true) }}"
- name: Ensure SSH authorized keys for '{{ user.name }}' are {{ user.state }}
when:
- user.state == 'present'
- user.authorized_keys | default([]) | length > 0
block:
- name: Ensure .ssh directory for user '{{ user.name }}' exists
ansible.builtin.file:
path: "{{ user.home | default('/home/' + user.name) + '/.ssh' }}"
state: "directory"
owner: "{{ user.name }}"
group: "{{ user.name }}"
mode: "0700"
- name: Ensure key is up to date
ansible.posix.authorized_key:
user: "{{ user.name }}"
state: "{{ key.state | default('present', true) }}"
key: "{{ key.key }}"
comment: "{{ user.name }}-{{ key.comment }}"
loop: "{{ user.authorized_keys }}"
loop_control:
loop_var: key
label: "{{ user.name }}-{{ key.comment }}"