如何在 Ansible 中引用现有的 uid 和 gid?

如何在 Ansible 中引用现有的 uid 和 gid?

在我的剧本中,我安装了 amavis 包。稍后在一项任务中,我使用 mount 模块设置了一个 ramdisk (tmpfs)。

为了让 tmpfs-ramdisk 由在 amavis 包安装期间创建的 uid 和 gid(amavis-user 和 amavis-group,在 /etc/fstab 中然后使用 options 参数)拥有,我如何找出创建了哪个 uid 和 gid?

目标(类似于):

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

或者我应该在包安装之前创建用户以通过 Ansible 明确设置 uid 和 gid?

答案1

您应该能够uid=amavis-user,gid=amavis-group在 /etc/fstab 中指定。Linux 挂载程序将正确地解释它们

答案2

虽然 Bruce P 的答案在某些情况下通常是一个很好的解决方案,但无法仅提供一个名称。按照 Satish Koppisetty 的方法,这里有一些代码可以做到这一点:

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

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

现在您有两个字典(getent_passwdgetent_group),您可以从中检索数据。以下代码仅输出 id:

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

一点背景知识:情况就是这样的,因为getent返回的字典如下所示:

{
    "mygroup": [
        "x",
        "1004",
        "some_group_member"
    ]
}

答案3

查看 Ansible 模块盖特恩database=passwd

相关内容