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

ini*_*all 6 linux ansible

在我的剧本中,我安装了 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
Run Code Online (Sandbox Code Playgroud)

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

小智 5

虽然 Bruce P 的答案在某些情况下通常是一个很好的解决方案,但无法仅提供名称。下面是一些代码,遵循 Satish Koppisetty 的方法:

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

- name: get mygroup gid
  getent:
    database: group
    key: mygroup
Run Code Online (Sandbox Code Playgroud)

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

- debug:
    msg:
      - "user id {{ getent_passwd.myuser[1] }}"
      - "group id {{ getent_group.mygroup[1] }}"
Run Code Online (Sandbox Code Playgroud)

一点背景知识:情况就是这样,因为getent返回的字典看起来像这样:

{
    "mygroup": [
        "x",
        "1004",
        "some_group_member"
    ]
}
Run Code Online (Sandbox Code Playgroud)


Bru*_*e P 4

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