# create_user.yml: create user on target host
# execution example: ansible-playbook create_user.yml -e target=localhost -e user=testusr -e passwd=123 -e uid=1007 -e group=users -e additional_groups='sudo,audio,video' -e 'info="support user"'
#
# params: target, user, passwd, uid, [group], [groups], [info]
- name: set host
hosts: "{{ target | lower }}" # target host[1+]
tasks:
- name: print usage
fail:
msg: "some mandatory param is missing or empty: user, passwd, uid. sample usage: ansible-playbook create_user.yml -e host=localhost -e user=testusr -e passwd=123 -e uid=1007 -e group=users -e additional_groups='sudo,audio,video' -e 'info=\"support user\"'"
when: (user is undefined) or (user|length == 0) or (passwd is undefined) or (passwd|length == 0) or (uid is undefined) or (uid|length == 0)
- name: create user
user:
name: "{{ user | lower }}" # user name[1]
password: "{{ passwd | password_hash('sha512') }}" # user password[1]
uid: "{{ uid }}" # uid[1]
group: "{{ group | default('users') }}" # default group[0,1]
groups: "{{ additional_groups | default('sudo,audio') }}" # additional groups[0+]
append: yes # append additional groups
shell: /bin/bash # user shell
comment: "{{ info | default('created by awx') }}" # user info[0,1]
update_password: on_create # no update passwd if playbook run twice
state: present
become: true
links
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/user_module.html