getent#

Модуль ansible.builtin.getent использует утилиту getent для сбора фактов об узле. Эта утилита возвращает записи из баз данных, поддерживаемых библиотеками диспетчера службы имен (Name Service Switch, NSS).

Вызов утилиты getent имеет следующий синтаксис:

getent <database> [<key>]

Здесь:

  • <database> – название БД;

  • <key> – необязательный ключ в БД.

    Если ключ указан, команда вернет только соответствующие ему значения. В противном случае возвращаются все возможные значения.

Особенности работы#

Модуль добавляет полученные сведения в факт Ansible getent_<database>, где <database> – название БД, из которой извлекаются данные.

Некоторые БД не поддерживают перечисления. Подробности уточняйте в документации используемой ОС.

Список баз данных определяется возможностями используемой библиотеки GNU C.

Параметры#

Модуль принимает следующие параметры:

database#

Обязательный параметр.

Название БД.

fail_key#

Следует ли считать ошибкой отсутствие ключа в БД.

Возможные значения:

  • false – игнорировать отсутствующий ключ;

  • true – при отсутствии ключа задача завершается с ошибкой.

key#

Название ключа для фильтрации записей в указанной БД. Если параметр не указан, возвращаются все записи.

service#

Название службы, используемой для получения данных вместо БД.

ОС управляемого узла должна поддерживать соответствующий флаг.

Использование этого параметра эквивалентно вызову getent с аргументом --service.

split#

Последовательность символов, используемая для разделения значений на списки, например, : или \t.

Если значение параметра не задано, модуль попытается автоматически выбрать разделитель, соответствующий указанной БД.

Возвращаемые факты#

Факты, возвращаемые модулем, автоматически добавляются в переменную узла hostvars и доступны тем же образом, что и остальные факты. Регистрация значения для его последующего использования не требуется.

Модуль возвращает факты в факте getent_<database>, где <database> – название БД. Список значений зависит от типа БД.

Условия: всегда.

Атрибуты#

Атрибуты определяют функции Ansible, которые может использовать модуль.

Атрибут

Описание

check_mode

Модуль работает в режиме проверки в полном объеме. Режим проверки позволяет узнать какие факты об узле будут собраны при выполнении задачи.

diff_mode

Модуль не поддерживает режим сравнения.

facts

Модуль полностью поддерживает работу с фактами и обновляет их при работе с узлом.

platform

Модуль поддерживает только POSIX-совместимые ОС.

Примеры#

Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.

Получение сведений из БД passwd#

Следующий пример описывает получение сведений о пользователе www-data из БД passwd:

---
- name: Get www-data info
  ansible.builtin.getent:
    database: passwd
    key: www-data

- name: Print passwd fact
  ansible.builtin.debug:
    var: ansible_facts['getent_passwd']

Результаты выполнения сценария:

ansible_facts['getent_passwd']: {
    "www-data": [
        "x",
        "33",
        "33",
        "www-data",
        "/var/www",
        "/usr/sbin/nologin"
    ]
}

Получение списка групп#

Следующий пример демонстрирует использование параметра split:

---
- name: Get aliases
  ansible.builtin.getent:
    database: aliases
    split: ":"

- name: Print aliases
  ansible.builtin.debug:
    var: ansible_facts['getent_aliases']

Результаты выполнения сценария:

ansible_facts['getent_aliases']: {
  "abuse": [
      "          root"
  ],
  "ftp": [
      "            root"
  ],
  "hostmaster": [
      "    root"
  ],
  "mailer-daemon": [
      " postmaster"
  ],
  "news": [
      "          root"
  ],
  "nobody": [
      "        root"
  ],
  "noc": [
      "           root"
  ],
  "postmaster": [
      "    root"
  ],
  "security": [
      "      root"
  ],
  "usenet": [
      "        root"
  ],
  "webmaster": [
      "     root"
  ],
  "www": [
                   root"
  ]
}