Adding a user to an additional group using ansible

Solution 1:

According to the User module you can use this:

- name: Adding user {{ user }}  
  user: name={{ user }}
        group={{ user }}
        shell=/bin/bash
        password=${password}
        groups=sudo
        append=yes

You can just add the groups=groupname and append=yes to add them to an existing user when you're creating them

Solution 2:

If {{ user }} already exists in the system, you should use the following to just add it to a group:

- name: adding existing user '{{ user }}' to group sudo
  user:
    name: '{{ user }}'
    groups: sudo
    append: yes

To add it to a set of groups, you can use a comma separated list, for example groups: admin,sudo.

Just beware that if you omit append: yes, your user will be removed from all other groups, according to the usermod man page. That would useful if you want to use a specific list of groups a user should belong to.

Solution 3:

Please note that {{ user }} was changed to {{ ansible_user }} in recent Ansible versions (https://github.com/ansible/ansible/blob/c600ab81ee/lib/ansible/playbook/play_context.py#L46-L55). Alternatively, you can also use ansible_ssh_user - it's the same. So, the updated code from Teresa e Junior looks like:

- name: adding existing user "{{ ansible_user }}" to group sudo
   user:
     name: "{{ ansible_user }}"
     groups: sudo
     append: yes
   become: yes

More fixes:

  • Use double quotes so the variable expands
  • Add become: yes since it needs administrative privileges to change the groups file