Files
users/tasks/user.yml
T

61 lines
2.7 KiB
YAML

---
- name: user | create groups
group:
name: "{{ item.group|default(item.name) }}"
system: '{{ item.system|default(omit) }}'
gid: '{{ item.gid|default(omit) }}'
state: '{{ item.state|default("present") }}'
with_flattened :
- "{{users_system.group|default([])}}"
- "{{users_system.user|default([])}}"
when : ((item.name is defined and item.name != 'root'))
- name: user | create/modify/delete
user:
name: '{{ item.name }}'
group: '{{ item.group | default(item.name) }}'
groups: "{{ item.groups | default([]) | join(',') or omit }}"
append: "{{ item.append | default('yes') if (item.groups is defined and item.groups) else omit }}"
shell: '{{ item.shell | default("/bin/bash") }}'
uid: '{{ item.uid | default(omit) }}'
non_unique: '{{ item.non_unique | default(omit) }}'
state: '{{ item.state | default("present") }}'
comment: '{{ item.comment | default(omit) }}'
password: '{{ item.password | default("!") }}'
update_password: '{{ item.update_password | default("on_create") }}'
system: '{{ item.system | default(omit) }}'
home: '{{ item.home | default(omit) }}'
createhome: '{{ item.createhome | default(omit) }}'
generate_ssh_key: '{{ item.generate_ssh_key | default(omit) }}'
ssh_key_file: '{{ item.ssh_key_file | default(omit) }}'
ssh_key_passphrase: '{{ item.ssh_key_passphrase | default(omit) }}'
ssh_key_type: '{{ item.ssh_key_ssh_key_type | default("rsa") }}'
ssh_key_bits: '{{ item.ssh_key_bits | default(omit) }}'
ssh_key_comment: '{{ item.ssh_key_comment | default(omit) }}'
expires: '{{ item.expires | default(omit) }}'
move_home: '{{ item.move_home | default(omit) }}'
remove: '{{ item.remove | default(omit) }}'
loop: "{{ users_system.user | default([]) }}"
no_log: "{{ no_log | default(true) }}"
when: ((item.name is defined and item.name != 'root') and (item.state is undefined or (item.state is defined and item.state != 'absent')))
- name: user | ensure home directory mode
file:
path: '{{ item.home|default("/home/" + item.name) }}'
state: directory
mode: '{{ item.mode }}'
loop_control:
label: '{{ item.home|default("/home/" + item.name) }}'
when:
- 'item.mode is defined'
- 'item.state|default("present") != "absent"'
with_items: "{{users_system.user|default([])}}"
- name: user | handle ssh's authorized keys
authorized_key:
user: "{{ item.name }}"
key: "{{ '\n'.join(item.authorized_keys) | string }}"
state: present
with_items : "{{users_system.user}}"
when: ((item.name is defined and item.name != 'root') and (item.state is undefined or (item.state is defined and item.state != 'absent')) and item.authorized_keys is defined)