/
/
/
1- name: Ensure primary group exists
2 group:
3 name: "{{ my_user_primary_group }}"
4 state: present
5 become: true
6
7- name: Ensure user exists
8 user:
9 name: "{{ my_user_username }}"
10 group: "{{ my_user_primary_group }}"
11 groups: "{{ my_user_groups | default([]) | join(',') }}"
12 append: true
13 state: present
14 update_password: on_create
15 password: >-
16 {{ (my_user_password | default('') | string | length > 0) | ternary(
17 (my_user_password | string | password_hash('sha512')),
18 omit
19 ) }}
20 shell: "{{ my_user_shell | default('/bin/bash') }}"
21 create_home: true
22 become: true
23
24- name: Ensure home permissions and ownership
25 file:
26 path: "/home/{{ my_user_username }}"
27 state: directory
28 mode: "{{ home_mode }}"
29 owner: "{{ my_user_username }}"
30 group: "{{ my_user_primary_group }}"
31 become: true
32
33- name: Suppress login messages (.hushlogin)
34 file:
35 path: "/home/{{ my_user_username }}/.hushlogin"
36 state: touch
37 mode: "0644"
38 owner: "{{ my_user_username }}"
39 group: "{{ my_user_primary_group }}"
40 modification_time: preserve
41 access_time: preserve
42 become: true
43
44