Spec-Zone.ru › Ansible 2.9

postgresql_user – Добавить или удалить пользователя (роль) из экземпляра сервера PostgreSQL

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

Описание

  • Добавляет или удаляет пользователя (роль) из экземпляра сервера PostgreSQL («кластер» в терминологии PostgreSQL) и, необязательно, предоставляет пользователю доступ к существующей базе данных или таблицам.
  • Пользователь — это роль с правом входа.
  • Основной функцией модуля является создание или удаление пользователей из экземпляров PostgreSQL. Назначение или удаление привилегий — необязательный шаг, который выполняется для одной базы данных за раз. Это позволяет вызывать модуль несколько раз в том же модуле для изменения разрешений в разных базах данных или для предоставления разрешений уже существующим пользователям.
  • Пользователя нельзя удалить, пока от него не будут отозваны все привилегии. В такой ситуации, если модуль пытается удалить пользователя, он завершится ошибкой. Чтобы этого избежать, параметр fail_on_user сигнализирует модулю попытаться удалить пользователя, но если это невозможно, продолжить выполнение; модуль сообщит, были ли внесены изменения и отдельно, был ли удален пользователь или нет.

Требования

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

  • psycopg2

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
ca_cert
строка
Указывает имя файла, содержащего сертификат(ы) SSL-центра сертификации (CA).
Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров.

псевдонимы: ssl_rootcert
conn_limit
целое число
добавлено в 2.4
Указывает предел подключений пользователя (роли).
db
строка
Имя базы данных для подключения и где будут предоставлены разрешения пользователя.

псевдонимы: login_db
encrypted
логическое значение
    Варианты:
  • нет
  • да ←
Указывает, хранится ли пароль в зашифрованном виде в базе данных.
Пароли могут быть переданы уже зашифрованными или незашифрованными, и PostgreSQL гарантирует, что хранимый пароль будет зашифрован, если encrypted установлен.
Примечание: PostgreSQL 10 и более поздние версии не поддерживают незашифрованные пароли.
До Ansible 2.6 это было no по умолчанию.
expires
строка
Дата истечения срока действия пароля пользователя.
Если установлено значение 'infinity', пароль пользователя никогда не истекает.
Обратите внимание, что это значение должно быть допустимым типом даты и времени SQL.
fail_on_user
логическое значение
    Варианты:
  • нет
  • да ←
Если yes, при невозможности удаления пользователя (роли) происходит ошибка. Иначе просто регистрируется и выполняется продолжение.

псевдонимы: fail_on_role
groups
список / элементы=строка
добавлено в 2.9
Список групп (ролей), которые нужно предоставить пользователю.
login_host
строка
Хост, на котором запущенна база данных.
login_password
строка
Пароль для аутентификации.
login_unix_socket
строка
Путь к сокету Unix-домена для локальных подключений.
login_user
строка
По умолчанию:
"postgres"
Имя пользователя для аутентификации.
name
строка / обязательно
Имя пользователя (роли) для добавления или удаления.

псевдонимы: user
no_password_changes
логическое значение
    Варианты:
  • нет ←
  • да
Если yes, не проверять базу данных на изменения паролей. Эффективно, когда pg_authid недоступен (например, AWS RDS). Иначе, производить изменения паролей по необходимости.
password
строка
Устанавливает пароль пользователя. До версии 1.4 это было обязательно.
Пароль может быть передан незашифрованным или зашифрованным (MD5-зашифрованным).
Незашифрованный пароль автоматически зашифруется при сохранении в базе данных, если установлен параметр encrypted, иначе он будет сохранен в открытом формате.
При передаче зашифрованного пароля он должен быть сгенерирован в формате 'str["md5"] + md5[ password + username ]', в результате чего получится 35 символов. Легкий способ сделать это echo "md5$(echo -n 'verysecretpasswordJOE' | md5sum | awk '{print $1}'").
Обратите внимание, что если предоставленная строка пароля уже находится в формате MD5-хеша, то она используется как есть, независимо от параметра encrypted.
port
целое число
По умолчанию:
5432
Порт базы данных для подключения.

псевдонимы: login_port
priv
строка
Строка привилегий PostgreSQL, разделенных слешами: priv1/priv2, где привилегии могут быть определены для базы данных (допустимые значения — 'CREATE', 'CONNECT', 'TEMPORARY', 'TEMP', 'ALL'. Например, CONNECT) или для таблицы (допустимые значения — 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER', 'ALL'. Например, table:SELECT) Смешанный пример этой строки: CONNECT/CREATE/table1:SELECT/table2:INSERT.
role_attr_flags
строка
    Варианты:
  • [NO]SUPERUSER
  • [NO]CREATEROLE
  • [NO]CREATEDB
  • [NO]INHERIT
  • [NO]LOGIN
  • [NO]REPLICATION
  • [NO]BYPASSRLS
Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER.
Обратите внимание, что '[NO]CREATEUSER' устарел.
Чтобы создать простую роль для использования её как группы, используйте флаг NOLOGIN.
session_role
строка
добавлено в 2.8
Переключение на session_role после подключения.
Указанная session_role должна быть ролью, членом которой является текущий login_user.
Проверка разрешений для SQL-команд выполняется так, как если бы session_role была той, которая первоначально вошла в систему.
ssl_mode
строка
    Варианты:
  • разрешить
  • отключить
  • предпочитать ←
  • требовать
  • проверить-ca
  • полная-проверка
Определяет, будет ли и с какой приоритетностью устанавливаться защищенное SSL-соединение TCP/IP с сервером.
См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах.
Значение по умолчанию prefer соответствует значению по умолчанию libpq.
state
строка
    Варианты:
  • отсутствует
  • существует ←
Состояние пользователя (роли).

Примечания

Примечание

  • Модуль по умолчанию создаёт пользователя (роль) с правом входа. Используйте роль_attr_flags NOLOGIN для изменения этого поведения.
  • Если вы укажете PUBLIC в качестве пользователя (роли), то изменения привилегий будут применяться ко всем пользователям (ролям). При указании пользователя PUBLIC нельзя указывать пароль или роль_attr_flags.
  • По умолчанию аутентификация предполагает, что вы входите в систему или используете sudo для учетной записи postgres на хосте.
  • Чтобы избежать ошибки «Ошибка проверки подлинности удалённого пользователя для пользователя postgres», используйте пользователя postgres в качестве become_user.
  • Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля.
  • Если удалённый хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удалённом хосте.
  • Для систем на базе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
  • Параметр ca_cert требует как минимум версию Postgres 8.4 и версию psycopg2 2.4.3.

См. также

См. также

postgresql_privs – Предоставление или отзыв привилегий на объекты базы данных PostgreSQL
Официальная документация модуля postgresql_privs.
postgresql_membership – Добавление или удаление ролей PostgreSQL из групп
Официальная документация модуля postgresql_membership.
postgresql_owner – Изменение владельца объекта базы данных PostgreSQL
Официальная документация модуля postgresql_owner.
Роли базы данных PostgreSQL
Полное руководство по документации ролей базы данных PostgreSQL.

Примеры

- name: Connect to acme database, create django user, and grant access to database and products table
  postgresql_user:
    db: acme
    name: django
    password: ceec4eif7ya
    priv: "CONNECT/products:ALL"
    expires: "Jan 31 2020"

# Connect to default database, create rails user, set its password (MD5-hashed),
# and grant privilege to create other databases and demote rails from super user status if user exists
- name: Create rails user, set MD5-hashed password, grant privs
  postgresql_user:
    name: rails
    password: md59543f1d82624df2b31672ec0f7050460
    role_attr_flags: CREATEDB,NOSUPERUSER

- name: Connect to acme database and remove test user privileges from there
  postgresql_user:
    db: acme
    name: test
    priv: "ALL/products:ALL"
    state: absent
    fail_on_user: no

- name: Connect to test database, remove test user from cluster
  postgresql_user:
    db: test
    name: test
    priv: ALL
    state: absent

- name: Connect to acme database and set user's password with no expire date
  postgresql_user:
    db: acme
    name: django
    password: mysupersecretword
    priv: "CONNECT/products:ALL"
    expires: infinity

# Example privileges string format
# INSERT,UPDATE/table:SELECT/anothertable:ALL

- name: Connect to test database and remove an existing user's password
  postgresql_user:
    db: test
    user: test
    password: ""

- name: Create user test and grant group user_ro and user_rw to it
  postgresql_user:
    name: test
    groups:
    - user_ro
    - user_rw

Значения возврата

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

Ключ Возвращаемое Описание
queries
список
добавлен в 2.8
всегда
Список выполненных запросов.

Пример:
['CREATE USER "alice"', 'GRANT CONNECT ON DATABASE "acme" TO "alice"']


Статус

  • Данный модуль гарантирует обратную совместимость изменений интерфейса в дальнейшем. [stableinterface]
  • Этот модуль поддерживается сообществом Ansible. [community]

Авторы

  • Команда Ansible Core

Подсказка

Если вы обнаружите какие-либо проблемы в данной документации, вы можете отредактировать этот документ, чтобы улучшить его.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/postgresql_user_module.html

Spec-Zone.ru

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