community.general.postgresql_set – Изменение параметра конфигурации сервера PostgreSQL
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в playbook, укажите: community.general.postgresql_set.
Описание
- Позволяет изменить параметр конфигурации сервера PostgreSQL.
- Модуль использует команду ALTER SYSTEM и применяет изменения путем перезагрузки конфигурации сервера.
- ALTER SYSTEM используется для изменения параметров конфигурации сервера во всем кластере баз данных.
- Это может быть более удобным и безопасным, чем традиционный метод ручного редактирования файла postgresql.conf.
- ALTER SYSTEM записывает заданное значение параметра в файл $PGDATA/postgresql.auto.conf, который читается дополнительно к postgresql.conf.
- Модуль позволяет сбросить параметр до значения boot_val (начальное значение кластера), установив reset=yes, или удалить строку параметра из postgresql.auto.conf и перезагрузить value=default (для настроек с контекстом postmaster требуется перезапуск).
- После изменения в выводе ansible можно увидеть предыдущее и новое значение параметра и другую информацию, используя возвращаемые значения и модуль ansible.builtin.debug.
Требования
Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) SSL-центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на подпись одним из этих центров. Псевдонимы: ssl_rootcert | |
| db строка | Имя базы данных для подключения. Псевдонимы: login_db | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль, используемый для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix-домена для локальных подключений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя, используемое для аутентификации. |
| name строка / обязательно | Имя параметра сервера PostgreSQL. | |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. Псевдонимы: login_port |
| reset булево |
| Восстановить параметр до начального состояния (boot_val). Взаимоисключающий с value. |
| session_role строка | Переключение на session_role после подключения. Указанный session_role должен быть ролью, членом которой является текущий login_user. Проверка разрешений для SQL-команд выполняется так, как будто session_role был тем, кто первоначально вошел в систему. | |
| ssl_mode строка |
| Определяет, будет ли и с какой приоритетностью устанавливаться защищенное SSL TCP/IP-соединение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию prefer соответствует значению по умолчанию libpq. |
| trust_input булево добавлено в 0.2.0 community.general |
| Если no, проверяется, являются ли значения параметров потенциально опасными.Использовать no имеет смысл только тогда, когда возможны SQL-инъекции. |
| value строка | Значение параметра, которое нужно установить. Чтобы удалить строку параметра из postgresql.auto.conf и перезагрузить конфигурацию сервера, необходимо передать value=default. При value=default playbook всегда возвращает changed = true. |
Примечания
Примечание
- Поддерживается версия PostgreSQL 9.4 и более поздние.
- Обратите внимание, изменение настройки с контекстом «postmaster» может возвращать changed = true, когда фактически ничего не меняется, поскольку одно и то же значение может быть представлено в нескольких различных форматах, например, 1024МБ, 1ГБ и т. д. Однако в представлении pg_settings это значение может быть определено как число 131072 страниц по 8 КБ. Конечная проверка значения параметра не может сравнить его, потому что сервер не был перезапущен, и значение в pg_settings еще не обновлено.
- Для некоторых параметров требуется перезапуск сервера PostgreSQL. См. официальную документацию https://www.postgresql.org/docs/current/view-pg-settings.html.
- Аутентификация по умолчанию предполагает, что вы вошли в систему как или используете sudo для учетной записи
postgresна хосте. - Чтобы избежать ошибки «Ошибка аутентификации peer для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует psycopg2, адаптер Python PostgreSQL базы данных. Вы должны убедиться, что psycopg2 установлен на хосте перед использованием этого модуля.
- Если удаленный хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удаленном хосте.
- Для систем на основе Ubuntu установите пакеты postgresql, libpq-dev и python-psycopg2 на удаленном хосте перед использованием этого модуля.
- Параметр ca_cert требует как минимум версии Postgres 8.4 и psycopg2 версии 2.4.3.
См. также
См. также
- community.general.postgresql_info
-
Официальная документация по модулю community.general.postgresql_info.
- Конфигурация сервера PostgreSQL
-
Общая информация о конфигурации сервера PostgreSQL.
- Справочник по представлению PostgreSQL pg_settings
-
Полный справочник по документации представления pg_settings.
- Справочник по команде PostgreSQL ALTER SYSTEM
-
Полный справочник по документации команды ALTER SYSTEM.
Примеры
- name: Restore wal_keep_segments parameter to initial state
community.general.postgresql_set:
name: wal_keep_segments
reset: yes
# Set work_mem parameter to 32MB and show what's been changed and restart is required or not
# (output example: "msg": "work_mem 4MB >> 64MB restart_req: False")
- name: Set work mem parameter
community.general.postgresql_set:
name: work_mem
value: 32mb
register: set
- ansible.builtin.debug:
msg: "{{ set.name }} {{ set.prev_val_pretty }} >> {{ set.value_pretty }} restart_req: {{ set.restart_required }}"
when: set.changed
# Ensure that the restart of PostgreSQL server must be required for some parameters.
# In this situation you see the same parameter in prev_val_pretty and value_pretty, but 'changed=True'
# (If you passed the value that was different from the current server setting).
- name: Set log_min_duration_statement parameter to 1 second
community.general.postgresql_set:
name: log_min_duration_statement
value: 1s
- name: Set wal_log_hints parameter to default value (remove parameter from postgresql.auto.conf)
community.general.postgresql_set:
name: wal_log_hints
value: default
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| context строка | всегда | Контекст параметра PostgreSQL. Пример: пользователь |
| name строка | всегда | Имя параметра сервера PostgreSQL. Пример: shared_buffers |
| prev_val_pretty строка | всегда | Информация о предыдущем состоянии параметра. Пример: 4МБ |
| restart_required булево | всегда | Информация о текущем состоянии параметра. Пример: Истина |
| value словарь | всегда | Словарь, содержащий текущее значение параметра (на момент завершения playbook). Обратите внимание, что для реального изменения некоторых параметров требуется перезапуск сервера PostgreSQL. Возвращает текущее значение в режиме проверки. Пример: {'unit': 'б', 'value': 67108864} |
| value_pretty строка | всегда | Информация о текущем состоянии параметра. Пример: 64МБ |
Авторы
- Андрей Клычков (@Andersson007)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/postgresql_set_module.html