7

In my playbook I install the amavis package. Later in a task I use the mount module to setup a ramdisk (tmpfs).

In order to let the tmpfs-ramdisk be owned by the uid and gid created during amavis package install (amavis-user and amavis-group, in /etc/fstab then using the options parameter) how do I find out which uid and gid was created?

Goal (something like):

/dev/shm /var/lib/amavis/tmp tmpfs defaults,noexec,nosuid,nodev,noatime,size=500m,mode=770,uid=112,gid=116 0 0

Or should I create the users before package installation to explicitly set uid and gid via Ansible?

initall
  • 2,325
  • 3
  • 18
  • 19

3 Answers3

4

While Bruce P's answer is often a good solutions in some situations there is no way to just supply a name. Following Satish Koppisetty's approach here is some code to do it:

- name: get myuser uid
  getent:
    database: passwd
    key: myuser

- name: get mygroup gid
  getent:
    database: group
    key: mygroup

You now have two dictionaries (getent_passwd and getent_group), from which you can retrieve the data. The following code just outputs the ids:

- debug:
    msg:
      - "user id {{ getent_passwd.myuser[1] }}"
      - "group id {{ getent_group.mygroup[1] }}"

A tiny bit of background: this is the case because getent returns a dictionary that looks something like this:

{
    "mygroup": [
        "x",
        "1004",
        "some_group_member"
    ]
}
H2O
  • 141
  • 1
4

You should be able to just specify uid=amavis-user,gid=amavis-group in your /etc/fstab. The linux mount program will interpret them correctly.

Bruce P
  • 2,193
  • 3
  • 18
  • 21
  • This is true. I'll see in the future if it's always possible to avoiud uid/gid lookups (aka "knowledge"). Guess it's recommended anyway to not need it. – initall Dec 17 '15 at 07:40
  • Hmm - not quite the answer - NFS exports doesn't look like it can deal with this for the anonuid and anongid settings. – Danny Staple Jun 21 '16 at 15:53
4

See the Ansible module getent with database=passwd.

techraf
  • 4,243
  • 8
  • 29
  • 44
  • Out of interest, why the downvotes? Bruce P's answer does seem easier in the context of this specific question, but is 'getent' a viable way for Ansible to get a uid in the general case? – Jonathan Hartley Mar 05 '17 at 02:05
  • 2
    I would appreciate a straight to the point answer on how to actually get the uid for a provided username with ansible. – redanimalwar Mar 07 '18 at 08:43