create user with ansible

# 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

Leave a comment