Назад | Перейти на главную страницу

Как сослаться на существующие uid и gid в Ansible?

В моем playbook я устанавливаю пакет amavis. Позже в задаче я использую модуль монтирования для установки ramdisk (tmpfs).

Чтобы tmpfs-ramdisk принадлежал uid и gid, созданным во время установки пакета amavis (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

Или я должен создать пользователей перед установкой пакета, чтобы явно установить uid и gid через Ansible?

См. Модуль Ansible getent с участием database=passwd.

Вы должны просто указать uid=amavis-user,gid=amavis-group в вашем / etc / fstab. Программа монтирования linux будет интерпретировать их правильно.

Хотя ответ Брюса П. часто является хорошим решением в некоторых ситуациях, просто указать имя невозможно. Следуя подходу Сатиша Копписетти, вот код для этого:

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

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

Теперь у вас есть два словаря (getent_passwd и getent_group), из которого вы можете получить данные. Следующий код просто выводит идентификаторы:

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

Немного фона: это так, потому что getent возвращает словарь, который выглядит примерно так:

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