postgresql_user - Добавляет или удаляет пользователей (роли) из базы данных PostgreSQL.
Описание
- Добавляет или удаляет пользователей (роли) PostgreSQL на удалённом хосте и, необязательно, предоставляет пользователям доступ к существующей базе данных или таблицам.
- Основной функцией модуля является создание или удаление ролей в кластере PostgreSQL. Назначение или снятие привилегий является необязательным шагом, который работает с одной базой данных за раз. Это позволяет вызывать модуль несколько раз в одном модуле для изменения разрешений на разные базы данных или для предоставления разрешений уже существующим пользователям.
- Пользователь не может быть удалён, пока все привилегии не будут сняты с пользователя. В таком случае, если модуль попытается удалить пользователя, он потерпит неудачу. Чтобы этого избежать, параметр fail_on_user сообщает модулю попытаться удалить пользователя, но если это невозможно, продолжить выполнение; модуль сообщит, произошли ли изменения, и отдельно, был ли пользователь удалён или нет.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| conn_limit (добавлено в 2.4) | Указывает лимит подключений пользователя. | |
| db | Имя базы данных, где будут предоставлены разрешения. | |
| encrypted bool (добавлено в 1.4) |
| Указывает, хранится ли пароль в хэшированном виде в базе данных. Пароли могут быть переданы уже хэшированными или без хэширования, и postgresql гарантирует, что хранимый пароль будет хэширован, когда encrypted установлен.Примечание: Postgresql 10 и более поздние версии не поддерживают пароли без хэширования. До Ansible 2.6, это было no по умолчанию. |
| expires (добавлено в 1.4) | Дата, к которой должен истечь срок действия пароля пользователя. Если установлено 'infinity', пароль пользователя никогда не истекает.Обратите внимание, что это значение должно быть допустимым типом даты и времени SQL. | |
| fail_on_user bool |
| Если yes, происходит ошибка, когда пользователь не может быть удален. В противном случае просто регистрируется событие и выполнение продолжается. |
| login_host | По умолчанию: "localhost" | Хост, на котором выполняется PostgreSQL. |
| login_password | Пароль, используемый для аутентификации в PostgreSQL. | |
| login_unix_socket | Путь к Unix-сокету для локальных подключений. | |
| login_user | По умолчанию: "postgres" | Пользователь (роль), используемый для аутентификации в PostgreSQL. |
| name обязательно | Имя пользователя (роли) для добавления или удаления. | |
| no_password_changes bool (добавлено в 2.0) |
| Если yes, не проверять базу данных на изменения пароля. Действует, когда pg_authid недоступен (например, AWS RDS). В противном случае выполняйте необходимые изменения пароля. |
| password | Установите пароль пользователя, до 1.4 это было обязательно. Пароль может быть передан без хэширования или хэшированным (MD5-хэшированным). Пароль без хэширования будет автоматически хэширован при сохранении в базе данных, если параметр encrypted установлен, в противном случае он будет сохранен в виде простого текста.При передаче хэшированного пароля он должен быть сгенерирован в формате 'str["md5"] + md5[ password + username ]', в результате чего будет 35 символов. Легкий способ сделать это echo "md5$(echo -n 'verysecretpasswordJOE' | md5sum).Обратите внимание, что если предоставленная строка пароля уже в формате MD5-хэша, то она используется как есть, независимо от параметра encrypted. | |
| port | По умолчанию: 5432 | Порт базы данных для подключения. |
| priv | Строка привилегий PostgreSQL в формате: table:priv1,priv2. | |
| role_attr_flags |
| Строка атрибутов роли PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER. Обратите внимание, что '[НЕТ]CREATEUSER' устарел. |
| ssl_mode (добавлено в 2.3) |
| Определяет, будет ли и с каким приоритетом устанавливаться защищенное SSL TCP/IP соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| ssl_rootcert (добавлено в 2.3) | Указывает имя файла, содержащего сертификат(ы) авторитета сертификации (CA) SSL. Если файл существует, сертификат сервера будет проверен на подпись одним из этих авторитетов. | |
| state |
| Состояние пользователя (роли). |
Примечания
Примечание
- Аутентификация по умолчанию предполагает, что вы входите как пользователь postgres на хосте или используете sudo.
- Этот модуль использует psycopg2, адаптер базы данных Python PostgreSQL. Вам необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост является сервером PostgreSQL (что является случаем по умолчанию), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на основе Ubuntu, установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Если вы укажете PUBLIC в качестве пользователя, то изменения привилегий будут применяться ко всем пользователям. Вы не можете указать пароль или role_attr_flags, когда указан пользователь PUBLIC.
- Параметр ssl_rootcert требует как минимум Postgres версии 8.4 и psycopg2 версии 2.4.3.
Примеры
# 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, set its password (MD5-hashed) and grant privilege to create other
# databases and demote rails from super user status
- postgresql_user:
name: rails
password: md59543f1d82624df2b31672ec0f7050460
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
# Set user's password with no expire date
- postgresql_user:
db: acme
name: django
password: mysupersecretword
priv: "CONNECT/products:ALL"
expire: infinity
# Example privileges string format
# INSERT,UPDATE/table:SELECT/anothertable:ALL
# Remove an existing user's password
- postgresql_user:
db: test
user: test
password: ""
Статус
Этот модуль помечен как stableinterface, что означает, что авторы модуля гарантируют, что не будет внесено обратных несовместимых изменений в интерфейс.
Техническое обслуживание
Этот модуль помечен как community, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.
Список других модулей, поддерживаемых сообществом Ansible, см. здесь.
Автор
- Команда разработчиков 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.6/modules/postgresql_user_module.html