UID and GID of default ansible user
1 min read

UID and GID of default ansible user

UID and GID of default ansible user

Here are three methods to get the UID and GID for the default ansible user.

With Ansible facts

If you don't disable fact gathering, then your ansible run will have a variable ansible_facts. In this case, you can get the UID and GID directly from it:

- name: Get ansible user UID and GID
  hosts: all
  tasks:
    - name: debug
      debug:
        msg: "{{ ansible_facts.user_id }}: {{ ansible_facts.user_uid }}:{{ ansible_facts.user_gid }}"

Via getent and ansible_user

If for whatever reason you don't want to gather facts and you have defined ansible_user for the hosts in inventory, then you can access it via:

- name: Get ansible user UID and GID
  hosts: all
  tasks:
    - getent:
	  database: passwd
    - name: debug
      debug:
        msg: "{{ ansible_user }}: {{ getent_passwd[ansible_user].1 }}:{{ getent_passwd[ansible_user].2 }}"

Execute the id command

Another alternative is to use the id Unix command:

- name: Get Ansible user UID
  hosts: all
  tasks:
    - name: Execute id command
      command: id -u {{ ansible_user }}
      register: ansible_user_uid

    - name: Debug Ansible user UID
      debug:
        var: ansible_user_uid.stdout

Here, the uid will be contained in ansible_user_uid.stdout.

For the group retrieval, you can run id with the -g flag to get the primary group, or -G to get a list of all groups an user belongs to. The easiest option would be:

- name: Get Ansible user primary GID
  hosts: all
  tasks:
    - name: Execute id command
      command: id -g {{ ansible_user }}
      register: ansible_user_gid

    - name: Debug Ansible user primary GID
      debug:
        var: ansible_user_gid.stdout

Conclusion

IMHO, the easiest way is the first one, as you don't need to employ the getent module, or run a platform-dependent command.