Spec-Zone.ru › Ansible

community.postgresql.postgresql_pg_hba — добавление, удаление или изменение правила в файле pg_hba

Примечание

Этот модуль входит в коллекцию community.postgresql (версия 4.2.0).

Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.postgresql. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.postgresql.postgresql_pg_hba.

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Основная функция модуля — создавать или удалять строки в файлах pg_hba.
  • Строки в файле должны иметь стандартный формат pg_hba и быть уникальными для каждого набора ключей (type, databases, users, source). Если они не уникальны и SID — «тот, который нужно изменить», для SID останется только одна запись при state=present или не останется ни одной при state=absent.

Требования

Следующие требования должны быть выполнены на хосте, где запускается этот модуль.

  • ipaddress

Параметры

Параметр

Комментарии

address

псевдонимы: source, src

строка

Исходный адрес/сеть, откуда могут поступать подключения.

Не используется для записей с type=local.

Также можно использовать ключевые слова all, samehost и samenet.

По умолчанию: "samehost"

attributes

псевдоним: attr

строка

Атрибуты, которыми должен обладать результирующий объект файловой системы.

Список поддерживаемых флагов см. на целевой системе в справочной странице для chattr.

Эта строка должна содержать атрибуты в том же порядке, в каком они отображаются командой lsattr.

По умолчанию предполагается оператор =, в противном случае в строку необходимо включить оператор + или -.

backup

логическое значение

Если параметр включён, перед изменением файла pg_hba создаётся его резервная копия. Путь к резервной копии возвращается этим модулем в переменной (backup).

Варианты:

  • false ← (по умолчанию)
  • true

backup_file

строка

Сохранить резервную копию в указанный файл, а не во временный.

comment

строка

добавлено в community.postgresql 1.5.0

Комментарий, который будет размещён в той же строке после правила. См. также параметр keep_comments_at_rules.

contype

строка

Тип правила. Если не задан, postgresql_pg_hba возвращает только содержимое.

Варианты:

  • "local"
  • "host"
  • "hostnossl"
  • "hostssl"
  • "hostgssenc"
  • "hostnogssenc"

create

логическое значение

Создать файл pg_hba, если он отсутствует.

Если значение — false, при отсутствии файла pg_hba возникает ошибка.

Варианты:

  • false ← (по умолчанию)
  • true

databases

строка

Базы данных, к которым применяется эта строка.

По умолчанию: "all"

dest

путь / обязательный

Путь к файлу pg_hba, который необходимо изменить.

group

строка

Имя группы — владельца объекта файловой системы; значение передаётся команде chown.

Если параметр не задан, используется текущая группа текущего пользователя, за исключением случая, когда пользователь — root: тогда может быть сохранён прежний владелец.

keep_comments_at_rules

логическое значение

добавлено в community.postgresql 1.5.0

Этот параметр объявлен устаревшим и ничего не делает. Модуль работает так, как если бы было задано true.

Варианты:

  • false
  • true ← (по умолчанию)

method

строка

Используемый метод аутентификации.

Варианты:

  • "cert"
  • "gss"
  • "ident"
  • "krb5"
  • "ldap"
  • "md5" ← (по умолчанию)
  • "pam"
  • "password"
  • "peer"
  • "radius"
  • "reject"
  • "scram-sha-256"
  • "sspi"
  • "trust"

mode

любой

Права доступа, которыми должен обладать результирующий объект файловой системы.

Если вы привыкли к /usr/bin/chmod, помните, что режимы доступа на самом деле являются восьмеричными числами. Необходимо предоставить Ansible достаточно информации, чтобы он мог правильно их разобрать. Для единообразия заключайте восьмеричные числа в кавычки (например, '644' или '1777'), чтобы Ansible получил строку и самостоятельно преобразовал её в число. Иногда помогает добавление ведущего нуля (например, 0755), однако в циклах и некоторых других случаях это может не сработать.

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

Начиная с Ansible 1.8 режим можно задавать в символьном формате (например, u+rwx или u=rw,g=r,o=r).

Если mode не задан и целевой объект файловой системы не существует, при установке режима для вновь созданного объекта будет использоваться значение umask, заданное в системе по умолчанию.

Если mode не задан и целевой объект файловой системы существует, будет использоваться режим существующего объекта файловой системы.

Указание mode — лучший способ гарантировать, что объекты файловой системы будут созданы с правильными правами доступа. Подробности см. в CVE-2020-1736.

netmask

строка

Маска подсети исходного адреса.

options

строка

Дополнительные параметры метода аутентификации method.

overwrite

логическое значение

Удалить все существующие правила перед добавлением новых. (Аналогично state=absent для всех существовавших ранее правил.)

Игнорирует все ошибки в существующем файле.

Варианты:

  • false ← (по умолчанию)
  • true

owner

строка

Имя пользователя — владельца объекта файловой системы; значение передаётся команде chown.

Если параметр не задан, используется текущий пользователь, за исключением случая, когда пользователь — root: тогда может быть сохранён прежний владелец.

Числовое имя пользователя будет считаться идентификатором пользователя, а не именем. Во избежание неоднозначности не используйте числовые имена пользователей.

rules

список / элементы=словарь

Список объектов с правилами для pg_hba.conf. Используйте его для управления несколькими правилами одновременно.

Каждый объект может содержать следующие ключи («аргументы для конкретного правила»), которые обрабатываются так же, как если бы они были аргументами этого модуля:

address, comment, contype, databases, method, netmask, options, state, users

См. также rules_behavior.

rules_behavior

строка

Настройка взаимодействия аргумента rules с аргументами для конкретного правила, указанными вне аргумента rules.

Полный список аргументов для конкретного правила см. в описании параметра rules.

Если задано значение conflict, при одновременном задании rules и, например, address возникнет ошибка.

При значении combine стандартные аргументы для конкретного правила не задают правило, а используются как значения по умолчанию для аргументов в rules.

Используется только при задании rules; в противном случае игнорируется.

Варианты:

  • "conflict" ← (по умолчанию)
  • "combine"

selevel

строка

Часть уровня контекста SELinux объекта файловой системы.

Это атрибут MLS/MCS, также иногда называемый range.

Если задано значение _default, будет использоваться соответствующая часть политики level, если она доступна.

serole

строка

Часть роли контекста SELinux объекта файловой системы.

Если задано значение _default, будет использоваться соответствующая часть политики role, если она доступна.

setype

строка

Часть типа контекста SELinux объекта файловой системы.

Если задано значение _default, будет использоваться соответствующая часть политики type, если она доступна.

seuser

строка

Часть пользователя контекста SELinux объекта файловой системы.

По умолчанию, если применимо, используется политика system.

Если задано значение _default, будет использоваться соответствующая часть политики user, если она доступна.

sort_rules

логическое значение

добавлено в community.postgresql 3.11.0

Сортирует правила в файле только при необходимости внести изменения. Правила сортируются так, чтобы более конкретные располагались выше. Например, правило для одного хоста будет стоять выше правила для диапазона IP-адресов.

Порядок правил важен, поскольку они проверяются сверху вниз и используется первое совпавшее правило. Это значит, что изменение порядка правил в файле может повлиять на поведение вашего экземпляра.

Комментарии будут перемещены в начало, директивы include — в конец, а пустые строки удалены.

Рекомендую отключить этот параметр при управлении файлом, который вручную редактируется, а также если порядок указанных вами правил имеет значение.

Варианты:

  • false
  • true ← (по умолчанию)

state

строка

Строки добавляются/изменяются при значении state=present и удаляются при значении state=absent.

Варианты:

  • "absent"
  • "present" ← (по умолчанию)

unsafe_writes

логическое значение

Определяет, когда использовать атомарные операции для предотвращения повреждения данных или несогласованного чтения из целевого объекта файловой системы.

По умолчанию этот модуль использует атомарные операции, чтобы предотвратить повреждение данных и несогласованное чтение из целевых объектов файловой системы, однако иногда настройки систем или их неисправность делают это невозможным. Например, смонтированные в Docker объекты файловой системы нельзя атомарно обновить из контейнера — их можно записать только небезопасным способом.

Этот параметр позволяет Ansible при сбое атомарных операций перейти к небезопасным способам обновления объектов файловой системы (однако он не заставляет Ansible выполнять небезопасную запись).

ВАЖНО! Небезопасная запись подвержена состояниям гонки и может привести к повреждению данных.

Варианты:

  • false ← (по умолчанию)
  • true

users

строка

Пользователи, к которым применяется эта строка.

По умолчанию: "all"

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в режиме check_mode и возвращать прогноз изменения статуса, не изменяя целевой объект

diff_mode

Поддержка: полная

В режиме diff возвращает сведения об изменениях (или о предполагаемых изменениях в режиме check_mode)

Примечания

Примечание

  • По умолчанию предполагается, что на хосте вы вошли в систему или переключились с помощью sudo на учётную запись с необходимыми правами для чтения и изменения файла.
  • Этот модуль также возвращает сведения pg_hba. Чтобы получить их, укажите только dest. Данные находятся в возвращаемом списке под ключом pg_hba; для каждого правила содержится отдельный словарь.
  • Если требуется изменить правило, этот модуль сортирует результирующие файлы pg_hba. При неправильно отсортированных файлах hba, созданных вручную, результат может оказаться неожиданным. Например, сначала создано правило для сети, а затем — для IP-адреса в диапазоне этой сети. В таком случае «правило для конкретного IP-адреса» никогда не сработает, поскольку в файле pg_hba оно устарело. После того как модуль community.postgresql.postgresql_pg_hba перезапишет файл pg_hba, правило для конкретного IP-адреса будет перемещено выше правила для диапазона. После этого оно сработает, что может привести к неожиданным результатам.

См. также

См. также

Справочник по файлу PostgreSQL pg_hba.conf

Полный справочник по документации файла PostgreSQL pg_hba.conf.

Примеры

- name: Grant users joe and simon access to databases sales and logistics from ipv6 localhost ::1/128 using peer authentication
  community.postgresql.postgresql_pg_hba:
    dest: /var/lib/postgres/data/pg_hba.conf
    contype: host
    users: joe,simon
    source: ::1
    databases: sales,logistics
    method: peer
    create: true

- name: Grant user replication from network 192.168.0.100/24 access for replication with client cert authentication
  community.postgresql.postgresql_pg_hba:
    dest: /var/lib/postgres/data/pg_hba.conf
    contype: host
    users: replication
    source: 192.168.0.100/24
    databases: replication
    method: cert

- name: Revoke access from local user mary on database mydb
  community.postgresql.postgresql_pg_hba:
    dest: /var/lib/postgres/data/pg_hba.conf
    contype: local
    users: mary
    databases: mydb
    state: absent

- name: Grant some_user access to some_db, comment that and keep other rule-specific comments attached to their rules
  community.postgresql.postgresql_pg_hba:
    dest: /var/lib/postgres/data/pg_hba.conf
    contype: host
    users: some_user
    databases: some_db
    method: md5
    source: ::/0
    keep_comments_at_rules: true
    comment: "this rule is an example"

- name: Replace everything with a new set of rules
  community.postgresql.postgresql_pg_hba:
    dest: /var/lib/postgres/data/pg_hba.conf
    overwrite: true # remove preexisting rules

    # custom defaults
    rules_behavior: combine
    contype: hostssl
    address: 2001:db8::/64
    comment: added in bulk

    rules:
    - users: user1
      databases: db1
      # contype, address and comment come from custom default
    - users: user2
      databases: db2
      comment: added with love # overwrite custom default for this rule
      # contype and address come from custom default
    - users: user3
      databases: db3
      # contype, address and comment come from custom default

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

backup_file

строка

Файл, в который была сохранена резервная копия исходного файла pg_hba.

Возвращается: при изменении

Пример: "/tmp/pg_hba_jxobj_p"

msgs

список / элементы=строка

Список текстовых сообщений о выполненных действиях.

Возвращается: при успешном выполнении

Пример: {"msgs": ["Removing", "Changed", "Writing"]}

pg_hba

список / элементы=строка

Список правил pg_hba в том виде, в котором они настроены в указанном файле hba.

Возвращается: при успешном выполнении

Пример: {"pg_hba": [{"db": "all", "method": "md5", "src": "samehost", "type": "host", "usr": "all"}]}

pg_hba_string

строка

Содержимое файла pg_hba после завершения работы модуля.

Возвращается: при успешном выполнении

Пример: "local\tall\tall\tpeer"

Авторы

  • Sebastiaan Mannem (@sebasmannem)
  • Felix Hamme (@betanummeric)
  • Thomas Ziegler (@toydarian)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Сообщить о проблеме
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/postgresql/postgresql_pg_hba_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API