postgresql_user – Добавление или удаление пользователя (роли) из экземпляра сервера PostgreSQL
Описание
- Добавляет или удаляет пользователя (роль) из экземпляра сервера PostgreSQL («кластера» в терминологии PostgreSQL) и, необязательно, предоставляет пользователю доступ к существующей базе данных или таблицам. Пользователь — это роль с правом входа (см. https://www.postgresql.org/docs/11/role-attributes.html для получения дополнительной информации).
- Основная функция модуля — создание или удаление пользователей из экземпляров PostgreSQL. Назначение или удаление привилегий — необязательный шаг, который работает с одной базой данных за раз. Это позволяет вызывать модуль несколько раз в том же модуле для изменения разрешений на разных базах данных или предоставления разрешений уже существующим пользователям.
- Пользователя нельзя удалить, пока все привилегии не будут отозваны у пользователя. В такой ситуации, если модуль пытается удалить пользователя, он завершится ошибкой. Чтобы избежать этого, опция fail_on_user сигнализирует модулю о попытке удалить пользователя, но если это невозможно, продолжить выполнение; модуль сообщит, произошли ли изменения и был ли пользователь удален отдельно.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка добавлено в 2.3 | Указывает имя файла, содержащего сертификат(ы) центра сертификации 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 |
| login_host строка | Хост, на котором выполняется база данных. | |
| login_password строка | Пароль для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix для локальных подключений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя для аутентификации. |
| name строка / обязательно | Имя пользователя (роли) для добавления или удаления. псевдонимы: user | |
| no_password_changes булево добавлено в 2.0 |
| Если 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 строка |
| Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER. Обратите внимание, что '[НЕТ]CREATEUSER' устарел. Чтобы создать простую роль для использования её как группы, используйте флаг NOLOGIN. |
| session_role строка добавлено в 2.8 | Переключиться на session_role после подключения. Указанная session_role должна быть ролью, членом которой является текущий login_user. Проверка разрешений для команд SQL выполняется так, как будто session_role была той, которая первоначально вошла в систему. | |
| ssl_mode строка добавлено в 2.3 |
| Определяет, будет ли и с каким приоритетом устанавливаться защищённое SSL TCP/IP соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| state строка |
| Состояние пользователя (роли). |
Примечания
Примечание
- Модуль по умолчанию создаёт пользователя (роль) с привилегией входа. Используйте роль_attr_flags NOLOGIN для изменения этого поведения.
- По умолчанию аутентификация предполагает, что вы входите в систему как пользователь или используете sudo для входа в учётную запись postgres на хосте.
- Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на основе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удалённом хосте перед использованием этого модуля.
- Если вы укажете PUBLIC в качестве пользователя (роли), изменения привилегий будут применяться ко всем пользователям (ролям). Вы не можете указать пароль или role_attr_flags, когда указан пользователь PUBLIC.
- Параметр ca_cert требует как минимум версию Postgres 8.4 и версию psycopg2 2.4.3.
- По умолчанию аутентификация предполагает, что вы входите в систему как пользователь или используете sudo для входа в
postgresучётную запись на хосте. - Этот модуль использует psycopg2, адаптер Python для базы данных PostgreSQL. Необходимо убедиться, что psycopg2 установлен на хосте перед использованием этого модуля. Если удалённый хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удалённом хосте. Для систем на основе Ubuntu установите пакеты
postgresql,libpq-dev, иpython-psycopg2на удалённом хосте перед использованием этого модуля. - Параметр ca_cert требует как минимум версию Postgres 8.4 и версию psycopg2 2.4.3.
Примеры
- 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: ""
Значения возврата
Общие значения возврата документированы здесь, ниже приведены поля, уникальные для этого модуля:
| Ключ | Возвращаемое | Описание |
|---|---|---|
| queries список добавлен в 2.8 | всегда | Список выполненных запросов. Пример: ['CREATE USER "alice"', 'GRANT CONNECT ON DATABASE "acme" TO "alice"'] |
Статус
- Этот модуль гарантирует отсутствие несовместимых изменений интерфейса в будущем. [stableinterface]
- Этот модуль поддерживается сообществом Ansible. [community]
Авторы
- Команда разработчиков 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.8/modules/postgresql_user_module.html