Модуль community.postgresql.postgresql_user – Создание, изменение или удаление пользователя (роли) из экземпляра сервера PostgreSQL
Примечание
Этот модуль является частью коллекции community.postgresql (версия 3.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, запустите ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.postgresql. Вам потребуются дополнительные требования для использования этого модуля, см. Требования для получения подробной информации.
Чтобы использовать его в playbook, укажите: community.postgresql.postgresql_user.
Краткое описание
- Создает, изменяет или удаляет пользователя (роль) из экземпляра сервера PostgreSQL («кластер» в терминологии PostgreSQL) и, при необходимости, предоставляет пользователю доступ к существующей базе данных или таблицам.
- Пользователь — это роль с привилегией входа.
- Вы также можете использовать его для предоставления или отзыва прав пользователя в конкретной базе данных.
- Вы не можете удалить пользователя, пока у него все еще есть какие-либо предоставленные ему привилегии в любой базе данных.
- Установите fail_on_user в
falseчтобы заставить модуль игнорировать ошибки при попытке удалить пользователя. В этом случае модуль сообщает об изменениях, как обычно, и отдельно сообщает, был ли удален пользователь или нет. - ПРЕДУПРЕЖДЕНИЕ Опция priv была устарела и будет удалена в community.postgresql 4.0.0. Пожалуйста, используйте модуль community.postgresql.postgresql_privs вместо этого.
Требования
Ниже приведены требования, необходимые на хосте, который выполняет этот модуль.
- psycopg2 >= 2.5.1
Параметры
Параметр | Комментарии |
|---|---|
ca_cert aliases: ssl_rootcert string | Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA). Если файл существует, проверяет, что сертификат сервера подписан одним из этих центров. |
comment string added in community.postgresql 0.2.0 | Добавляет комментарий к пользователю (эквивалентно оператору Чтобы сбросить комментарий, передайте пустую строку. |
configuration dictionary added in community.postgresql 3.5.0 | Параметры конфигурации, специфичные для роли, которые в противном случае устанавливаются с помощью Принимает словарь, где ключ — это имя параметра конфигурации. Если ключ содержит специальные символы, такие как Устанавливает или обновляет любой параметр в списке, который отсутствует или имеет неправильное значение в базе данных. Удаляет любой параметр из пользователя, который не указан здесь. Параметры, присутствующие в базе данных, но не включенные в этот список, будут только сброшены, если Входы в Default: |
conn_limit integer | Указывает лимит подключений пользователя (роли). |
connect_params dictionary added in community.postgresql 2.3.0 | Любые дополнительные параметры, которые необходимо передать в libpg. Эти параметры имеют приоритет. Default: |
db aliases: login_db string | Имя базы данных для подключения и где предоставляются права пользователя. Default: |
encrypted boolean | Хранится ли пароль в базе данных в хешированном виде. Вы можете указать нехешированный пароль, и PostgreSQL гарантирует, что хранимый пароль будет хеширован, когда установлен параметр encrypted=true. Если вы указываете хешированный пароль, модуль использует его как есть, независимо от настройки encrypted. Примечание: Postgresql 10 и новее не поддерживают нехешированные пароли. До Ansible 2.6 это было Choices:
|
expires string | Дата истечения срока действия пароля пользователя. Если установлено значение Обратите внимание, что это значение должно быть допустимым типом даты и времени SQL. |
fail_on_user aliases: fail_on_role boolean | Если Choices:
|
login_host aliases: host string | Хост, на котором работает база данных. Если у вас возникли проблемы с подключением при использовании Default: |
login_password string | Пароль, который должен использовать этот модуль для установления своего сеанса PostgreSQL. Default: |
login_unix_socket aliases: unix_socket string | Путь к сокету домена Unix для локальных подключений. Default: |
login_user aliases: login string | Имя пользователя, которое должен использовать этот модуль для установления своего сеанса PostgreSQL. Default: |
name aliases: user string / required | Имя пользователя (роли) для добавления или удаления. |
no_password_changes boolean | Если Варианты:
|
password string | Устанавливает пароль пользователя, до версии 1.4 это было обязательным. Пароль может быть передан незахешированным или захешированным (MD5-хеш). Незахешированный пароль автоматически хешируется при сохранении в базу данных, если установлен флаг encrypted, в противном случае он сохраняется в виде обычного текста. При передаче MD5-хешированного пароля, необходимо сгенерировать его в формате Обратите внимание, что если предоставленная строка пароля уже находится в MD5-хешированном формате, то она используется как есть, независимо от параметра encrypted. |
port алиасы: login_port integer | Порт базы данных для подключения. Значение по умолчанию: |
priv string | Этот параметр был устарел и будет удален в community.postgresql 4.0.0. Пожалуйста, используйте модуль community.postgresql.postgresql_privs для предоставления/отзыва прав вместо этого. Разделенная слешами строка привилегий PostgreSQL: Когда priv содержит таблицы, модуль использует схему |
reset_unspecified_configuration boolean добавлено в community.postgresql 3.5.0 | Если установлено значение Варианты:
|
role_attr_flags string | Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER. Обратите внимание, что ‘[NO]CREATEUSER’ устарел. Для создания простой роли для использования её как группы, используйте флаг Полный список поддерживаемых флагов см. в документации к вашей версии PostgreSQL. Значение по умолчанию: |
session_role string | Переключиться на роль сессии после подключения. Указанная роль сессии должна быть ролью, членом которой является текущий login_user. Проверка прав для SQL-команд выполняется так, как будто роль сессии была той, которая вошла в систему изначально. |
ssl_cert path добавлено в community.postgresql 2.4.0 | Указывает имя файла клиентского SSL-сертификата. |
ssl_key path добавлено в community.postgresql 2.4.0 | Указывает местоположение секретного ключа, используемого для клиентского сертификата. |
ssl_mode string | Определяет, как ведется согласование сеанса SSL с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию Варианты:
|
state string | Состояние пользователя (роли). Варианты:
|
trust_input boolean добавлено в community.postgresql 0.2.0 | Если Использование Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в check_mode и возвращать прогноз состояния «изменено» без изменения целевого объекта. |
Примечания
Примечание
- Модуль создает пользователя (роль) с привилегией входа по умолчанию. Используйте
NOLOGINrole_attr_flags для изменения этого поведения. - Если вы указываете
PUBLICв качестве пользователя (роли), то изменения привилегий применяются ко всем пользователям (ролям). Вы не можете указывать password или role_attr_flags, когда указан пользовательPUBLIC. - Пароли с хэшированием SCRAM-SHA-256 (SASL Authentication) требуют PostgreSQL версии 10 или новее. В предыдущих версиях вся хэшированная строка используется в качестве пароля.
- Работая с паролями с хэшированием SCRAM-SHA-256, убедитесь, что вы используете переменную среды:
PGOPTIONS: "-c password_encryption=scram-sha-256"(см. приведенный пример). - В некоторых системах (таких как AWS RDS),
pg_authidнедоступен, поэтому модуль не может сравнивать текущий и желаемыйpassword. В этом случае модуль предполагает, что пароли различны и изменяет его, сообщая о том, что состояние было изменено. Чтобы пропустить все проверки, связанные с паролями, для существующих пользователей, используйте no_password_changes=true. - В некоторых системах (таких как AWS RDS),
SUPERUSERнедоступен. Это означает, чтоSUPERUSERиNOSUPERUSERrole_attr_flags не следует указывать для сохранения идемпотентности и избежания ошибок InsufficientPrivilege. - Аутентификация по умолчанию предполагает, что вы либо входите в систему как, либо используете sudo для учетной записи
postgresна хосте. - Чтобы избежать ошибки «Peer authentication failed for user postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует
psycopg, адаптер базы данных Python PostgreSQL. Вы должны убедиться, чтоpsycopg2 >= 2.5.1илиpsycopg3 >= 3.1.8установлен на хосте перед использованием этого модуля. - Если удаленный хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удаленном хосте.
- Для систем на основе Ubuntu установите пакеты
postgresql,libpq-devиpython3-psycopg2на удаленном хосте перед использованием этого модуля.
См. также
См. также
- community.postgresql.postgresql_privs
-
Предоставление или отзыв привилегий на объектах базы данных PostgreSQL.
- community.postgresql.postgresql_membership
-
Добавление или удаление ролей PostgreSQL из групп.
- community.postgresql.postgresql_owner
-
Изменение владельца объекта базы данных PostgreSQL.
- PostgreSQL database roles
-
Полная справка по документации ролей базы данных PostgreSQL.
- PostgreSQL SASL Authentication
-
Полная справка по аутентификации PostgreSQL SASL.
Примеры
# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Connect to acme database, create django user, and grant access to database and products table
community.postgresql.postgresql_user:
db: acme
name: django
password: ceec4eif7ya
priv: "CONNECT/products:ALL"
expires: "Jan 31 2020"
- name: Add a comment on django user
community.postgresql.postgresql_user:
db: acme
name: django
comment: This is a test user
# Connect to default database, create rails user, set its password (MD5- or SHA256-hashed),
# and grant privilege to create other databases and demote rails from super user status if user exists
# the hash from the corresponding pg_authid entry.
- name: Create rails user, set MD5-hashed password, grant privs
community.postgresql.postgresql_user:
name: rails
password: md59543f1d82624df2b31672ec0f7050460
# password: SCRAM-SHA-256$4096:zFuajwIVdli9mK=NJkcv1Q++$JC4gWIrEHmF6sqRbEiZw5FFW45HUPrpVzNdoM72o730+;fqA4vLN3mCZGbhcbQyvNYY7anCrUTsem1eCh/4YA94=
role_attr_flags: CREATEDB,NOSUPERUSER
# When using sha256-hashed password:
#environment:
# PGOPTIONS: "-c password_encryption=scram-sha-256"
# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Connect to acme database and remove test user privileges from there
community.postgresql.postgresql_user:
db: acme
name: test
priv: "ALL/products:ALL"
state: absent
fail_on_user: false
# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Connect to test database, remove test user from cluster
community.postgresql.postgresql_user:
db: test
name: test
priv: ALL
state: absent
# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Connect to acme database and set user's password with no expire date
community.postgresql.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
community.postgresql.postgresql_user:
db: test
user: test
password: ""
# Create user with a cleartext password if it does not exist or update its password.
# The password will be encrypted with SCRAM algorithm (available since PostgreSQL 10)
- name: Create appclient user with SCRAM-hashed password
community.postgresql.postgresql_user:
name: appclient
password: "secret123"
environment:
PGOPTIONS: "-c password_encryption=scram-sha-256"
# This example uses the 'priv' argument which is deprecated.
# You should use the 'postgresql_privs' module instead.
- name: Create a user, grant SELECT on pg_catalog.pg_stat_database
community.postgresql.postgresql_user:
name: monitoring
priv: 'pg_catalog.pg_stat_database:SELECT'
# Create a user and set a default-configuration that is active when they start a session
- name: Create a user with config-parameter
community.postgresql.postgresql_user:
name: appclient
password: "secret123"
configuration:
work_mem: "16MB"
# Make sure user has only specified default configuration parameters
- name: Clear all configuration that is not explicitly defined for user
community.postgresql.postgresql_user:
name: appclient
password: "secret123"
configuration:
work_mem: "16MB"
reset_unspecified_configuration: true
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
queries список / элементы=строка | Список выполненных запросов. Возвращается: успех Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_user_module.html