Spec-Zone.ru › Ansible 2.8

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
строка
    Варианты:
  • [НЕТ]SUPERUSER
  • [НЕТ]CREATEROLE
  • [НЕТ]CREATEDB
  • [НЕТ]INHERIT
  • [НЕТ]LOGIN
  • [НЕТ]REPLICATION
  • [НЕТ]BYPASSRLS
Строка атрибутов пользователя PostgreSQL в формате: CREATEDB,CREATEROLE,SUPERUSER.
Обратите внимание, что '[НЕТ]CREATEUSER' устарел.
Чтобы создать простую роль для использования её как группы, используйте флаг NOLOGIN.
session_role
строка
добавлено в 2.8
Переключиться на session_role после подключения.
Указанная session_role должна быть ролью, членом которой является текущий login_user.
Проверка разрешений для команд SQL выполняется так, как будто session_role была той, которая первоначально вошла в систему.
ssl_mode
строка
добавлено в 2.3
    Варианты:
  • разрешено
  • выключено
  • предпочтительно ←
  • требуется
  • проверить-ca
  • проверить-полностью
Определяет, будет ли и с каким приоритетом устанавливаться защищённое 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

Spec-Zone.ru

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