postgresql_user — Добавляет или удаляет пользователей (роли) из базы данных PostgreSQL.
Описание
- Добавляет или удаляет пользователей (роли) PostgreSQL с удаленного хоста и, необязательно, предоставляет им доступ к существующей базе данных или таблицам.
- Основная функция модуля — создание или удаление ролей в кластере PostgreSQL. Назначение или снятие привилегий — необязательный шаг, который работает с одной базой данных за раз. Это позволяет вызывать модуль несколько раз в рамках одного модуля для изменения разрешений в разных базах данных или предоставления разрешений уже существующим пользователям.
- Пользователь не может быть удален, пока от него не будут отозваны все привилегии. В таком случае, если модуль попытается удалить пользователя, он потерпит неудачу. Чтобы этого избежать, параметр fail_on_user сообщает модулю попробовать удалить пользователя, но если это невозможно, продолжить; модуль сообщит о произведённых изменениях и отдельно о том, был ли пользователь удалён или нет.
Требования (для хоста, на котором выполняется модуль)
- psycopg2
Параметры
| параметр | обязателен | значение по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| conn_limit (добавлен в 2.4)
| нет | Указывает лимит подключений пользователя. | ||
| db | нет | имя базы данных, для которой будут предоставлены разрешения | ||
| encrypted (добавлен в 1.4)
| нет | указывает, хранится ли пароль в хешированном виде в базе данных. Булево значение. Пароли могут быть переданы в хешированном или нехешированном виде, и PostgreSQL гарантирует, что хранимый пароль будет хеширован, если установлен encrypted. | ||
| expires (добавлен в 1.4)
| нет | устанавливает срок действия пароля пользователя. | ||
| fail_on_user | нет | да |
| если yes, прекратить выполнение, когда пользователя невозможно удалить. Иначе просто залогировать и продолжить |
| login_host | нет | localhost | Хост, на котором запущен PostgreSQL. | |
| login_password | нет | Пароль, используемый для аутентификации в PostgreSQL | ||
| login_unix_socket | нет | Путь к Unix-сокету для локальных подключений | ||
| login_user | нет | postgres | Пользователь (роль), используемый для аутентификации в PostgreSQL | |
| name | да | имя пользователя (роли), для добавления или удаления | ||
| no_password_changes (добавлен в 2.0)
| нет | нет |
| если yes, не проверять базу данных на изменения пароля. Действует, когда pg_authid недоступен (например, AWS RDS). Иначе, изменить пароль по необходимости. |
| password | нет | установить пароль пользователя, до 1.4 это было обязательно. При передаче зашифрованного пароля, необходимо также установить параметр encrypted, и он должен быть сгенерирован в формате 'str[\"md5\"] + md5[ password + username ]', что даёт в итоге 35 символов. Простой способ сделать это: echo \"md5`echo -n \"verysecretpasswordJOE\" | md5`\". Обратите внимание, что если предоставленная строка пароля уже находится в формате MD5-хеша, то она используется как есть, независимо от параметра encrypted. | ||
| port | нет | 5432 | Порт базы данных для подключения. | |
| priv | нет | Строка привилегий PostgreSQL в формате: table:priv1,priv2
| ||
| role_attr_flags | нет |
| Строка атрибутов роли PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER | |
| ssl_mode (добавлен в 2.3)
| нет | prefer |
| Определяет, будет ли и с каким приоритетом устанавливаться защищённое SSL TCP/IP соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| ssl_rootcert (добавлен в 2.3)
| нет | Указывает имя файла, содержащего сертификат(ы) центра сертификации SSL. Если файл существует, сертификат сервера будет проверен на соответствие одному из этих сертификатов. | ||
| state | нет | present |
| Состояние пользователя (роли) |
Примеры
# Create django user and grant access to database and products table
- postgresql_user:
db: acme
name: django
password: ceec4eif7ya
priv: "CONNECT/products:ALL"
# Create rails user, grant privilege to create other databases and demote rails from super user status
- postgresql_user:
name: rails
password: secret
role_attr_flags: CREATEDB,NOSUPERUSER
# Remove test user privileges from acme
- postgresql_user:
db: acme
name: test
priv: "ALL/products:ALL"
state: absent
fail_on_user: no
# Remove test user from test database and the cluster
- postgresql_user:
db: test
name: test
priv: ALL
state: absent
# Example privileges string format
# INSERT,UPDATE/table:SELECT/anothertable:ALL
# Remove an existing user's password
- postgresql_user:
db: test
user: test
password: NULL
Примечания
Примечание
- По умолчанию предполагается, что вы авторизуетесь как пользователь postgres на хосте или используете sudo.
- Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост — это сервер PostgreSQL (что является типичным случаем), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на базе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Если библиотека passlib установлена, то пароли, зашифрованные в базе данных, но не зашифрованные при передаче в качестве аргументов, могут быть проверены на изменения. Если библиотека passlib не установлена, предполагается, что пароли, хранящиеся в зашифрованном виде в базе данных, но передаваемые без шифрования, изменены.
- Если вы укажете PUBLIC в качестве пользователя, то изменения привилегий будут применены ко всем пользователям. Вы не можете указать пароль или role_attr_flags, когда указан пользователь PUBLIC.
- Параметр ssl_rootcert требует как минимум версию Postgres 8.4 и psycopg2 версии 2.4.3.
Статус
Этот модуль помечен как stableinterface, что означает, что авторы модуля гарантируют отсутствие несовместимых изменений интерфейса.
Для помощи в разработке модулей, если вы заинтересованы, ознакомьтесь с Справочной информацией и участием в разработке сообщества, Тестированием Ansible и Разработкой модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/postgresql_user_module.html