community.general.postgresql_info – Сбор информации о серверах PostgreSQL
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в плейбуке укажите: community.general.postgresql_info.
Краткое описание
- Сбор информации о серверах PostgreSQL.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| ca_cert строка | Указывает имя файла, содержащего сертификат(ы) центра сертификации SSL (CA). Если файл существует, сертификат сервера будет проверен на соответствие подписи одного из этих центров. Псевдонимы: ssl_rootcert | |
| db строка | Имя базы данных для подключения. Псевдонимы: login_db | |
| filter список / элементы=строка | Ограничение собираемой информации с помощью перечисленных через запятую строк или YAML-списка. Допустимые значения — version, databases, in_recovery, settings, tablespaces, roles, replications, repl_slots.По умолчанию собираются все подмножества. Можно использовать символы подстановки в стиле оболочки (fnmatch) для передачи групп значений (см. примеры). Можно использовать «!» перед значением (например, !settings) для исключения его из информации.Если вы передаете включенные и исключенные значения в фильтр, например, filter=!settings,ver, исключающие значения будут проигнорированы. | |
| login_host строка | Хост, на котором работает база данных. | |
| login_password строка | Пароль, используемый для аутентификации. | |
| login_unix_socket строка | Путь к сокету Unix доменной области для локальных подключений. | |
| login_user строка | По умолчанию: "postgres" | Имя пользователя, используемое для аутентификации. |
| port целое число | По умолчанию: 5432 | Порт базы данных для подключения. Псевдонимы: login_port |
| 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, проверьте, может ли значение session_role быть потенциально опасным.Использование no целесообразно только в тех случаях, когда возможны SQL-инъекции через session_role. |
Примечания
Примечание
- Аутентификация по умолчанию предполагает, что вы входите в систему как пользователь
postgresили используете sudo на данном хосте. - Для предотвращения ошибки «Ошибка аутентификации клиента для пользователя 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_ping
-
Официальная документация модуля community.general.postgresql_ping.
Примеры
# Display info from postgres hosts.
# ansible postgres -m postgresql_info
# Display only databases and roles info from all hosts using shell-style wildcards:
# ansible all -m postgresql_info -a 'filter=dat*,rol*'
# Display only replications and repl_slots info from standby hosts using shell-style wildcards:
# ansible standby -m postgresql_info -a 'filter=repl*'
# Display all info from databases hosts except settings:
# ansible databases -m postgresql_info -a 'filter=!settings'
- name: Collect PostgreSQL version and extensions
become: yes
become_user: postgres
community.general.postgresql_info:
filter: ver*,ext*
- name: Collect all info except settings and roles
become: yes
become_user: postgres
community.general.postgresql_info:
filter: "!settings,!roles"
# On FreeBSD with PostgreSQL 9.5 version and lower use pgsql user to become
# and pass "postgres" as a database to connect to
- name: Collect tablespaces and repl_slots info
become: yes
become_user: pgsql
community.general.postgresql_info:
db: postgres
filter:
- tablesp*
- repl_sl*
- name: Collect all info except databases
become: yes
become_user: postgres
community.general.postgresql_info:
filter:
- "!databases"
Возвращаемые значения
Общие возвращаемые значения описаны здесь, а следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание | ||||
|---|---|---|---|---|---|---|
| databases словарь | всегда | Информация о базах данных. Пример: [{'postgres': {'access_priv': '', 'collate': 'en_US.UTF-8', 'ctype': 'en_US.UTF-8', 'encoding': 'UTF8', 'owner': 'postgres', 'size': '7997 kB'}}] | ||||
| database_name словарь | всегда | Имя базы данных. Пример: template1 | ||||
| access_priv строка | всегда | Права доступа к базе данных. Пример: =c/postgres_npostgres=CTc/postgres | ||||
| collate строка | всегда | Сортировка базы данных https://www.postgresql.org/docs/current/collation.html. Пример: en_US.UTF-8 | ||||
| ctype строка | всегда | LC_CTYPE базы данных https://www.postgresql.org/docs/current/multibyte.html. Пример: en_US.UTF-8 | ||||
| encoding строка | всегда | Кодировка базы данных https://www.postgresql.org/docs/current/multibyte.html. Пример: UTF8 | ||||
| extensions словарь | всегда | Пример: [{'plpgsql': {'description': 'Язык программирования PL/pgSQL', 'extversion': {'major': 1, 'minor': 0}}}] | ||||
| extdescription строка | если существует | Описание расширения. Пример: Язык программирования PL/pgSQL | ||||
| extversion словарь | всегда | Описание расширения. | ||||
| major целое число | всегда | Главная версия расширения. Пример: 1 | ||||
| minor целое число | всегда | Дополнительная версия расширения. | ||||
| nspname строка | всегда | Пространство имён, в котором находится расширение. Пример: pg_catalog | ||||
| languages словарь | всегда | Языки процедур https://www.postgresql.org/docs/current/xplang.html. Пример: {'sql': {'lanacl': '', 'lanowner': 'postgres'}} | ||||
| lanacl строка | всегда | Права доступа к языку https://www.postgresql.org/docs/current/catalog-pg-language.html. Пример: {postgres=UC/postgres,=U/postgres} | ||||
| lanowner строка | всегда | Владелец языка https://www.postgresql.org/docs/current/catalog-pg-language.html. Пример: postgres | ||||
| namespaces словарь | всегда | Пространства имён (схемы) https://www.postgresql.org/docs/current/sql-createschema.html. Пример: {'pg_catalog': {'nspacl': '{postgres=UC/postgres,=U/postgres}', 'nspowner': 'postgres'}} | ||||
| nspacl строка | всегда | Пример: {postgres=UC/postgres,=U/postgres} | ||||
| nspowner строка | всегда | Пример: postgres | ||||
| owner строка | всегда | Владелец базы данных https://www.postgresql.org/docs/current/sql-createdatabase.html. Пример: postgres | ||||
| publications словарь добавлен в 0.2.0 community.general | если настроено | Информация о логических публикациях репликации (доступно для PostgreSQL 10 и выше) https://www.postgresql.org/docs/current/logical-replication-publication.html. Содержание зависит от версии сервера PostgreSQL. Пример: {'pub1': {'ownername': 'postgres', 'puballtables': True, 'pubinsert': True, 'pubupdate': True}} | ||||
| size строка | всегда | Размер базы данных в байтах. Пример: 8189415 | ||||
| subscriptions словарь добавлен в 0.2.0 community.general | если настроено | Информация о подписках репликации (доступно для PostgreSQL 10 и выше) https://www.postgresql.org/docs/current/logical-replication-subscription.html. Содержание зависит от версии сервера PostgreSQL. Пример: [{'my_subscription': {'ownername': 'postgres', 'subenabled': True, 'subpublications': ['first_publication']}}] | ||||
| in_recovery булево | всегда | Указывает, находится ли служба в режиме восстановления. | ||||
| pending_restart_settings список / элементы=строка | всегда | Список настроек, ожидающих перезапуска. Пример: ['shared_buffers'] | ||||
| repl_slots словарь | если существует | Слоты репликации (доступны в 9.4 и более поздних версиях) https://www.postgresql.org/docs/current/view-pg-replication-slots.html. Пример: {'slot0': {'active': False, 'database': None, 'plugin': None, 'slot_type': 'physical'}} | ||||
| active булево | всегда | True означает, что с ним подключился получатель и он в настоящее время резервирует архивы. Пример: True | ||||
| database строка | всегда | Имя базы данных, с которой связан этот слот, или null. Пример: acme | ||||
| plugin строка | всегда | Основное имя разделяемого объекта, содержащего плагин вывода, который использует этот логический слот, или null для физических слотов. Пример: pgoutput | ||||
| slot_type строка | всегда | Тип слота — физический или логический. Пример: логический | ||||
| replications словарь | если существует pg_stat_replication view | Информация о текущих репликах по идентификаторам процессов PIDs https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE. Пример: [{'76580': {'app_name': 'standby1', 'backend_start': '2019-02-03 00:14:33.908593+03', 'client_addr': '10.10.10.2', 'client_hostname': '', 'state': 'streaming', 'usename': 'postgres'}}] | ||||
| app_name string | если существует | Имя приложения, подключённого к этому отправителю WAL. Пример: acme_srv | ||||
| backend_start string | всегда | Время запуска этого процесса, т.е. время подключения клиента к этому отправителю WAL. Пример: 2019-02-03 00:14:33.908593+03 | ||||
| client_addr string | всегда | IP-адрес клиента, подключённого к этому отправителю WAL. Если это поле равно null, это означает, что клиент подключён через сокет Unix на машине сервера. Пример: 10.0.0.101 | ||||
| client_hostname string | всегда | Имя хоста подключённого клиента, полученное в результате обратного DNS-разрешения client_addr. Это поле будет не null только для подключений по IP и только при включенном log_hostname. Пример: dbsrv1 | ||||
| state string | всегда | Текущее состояние отправителя WAL. Пример: streaming | ||||
| usename string | всегда | Имя пользователя, авторизованного в этом процессе отправителя WAL («usename» — это имя столбца в представлении pg_stat_replication). Пример: replication_user | ||||
| roles словарь | всегда | Информация о ролях https://www.postgresql.org/docs/current/user-manag.html. Пример: [{'test_role': {'canlogin': True, 'member_of': ['user_ro'], 'superuser': False, 'valid_until': '9999-12-31T23:59:59.999999+00:00'}}] | ||||
| canlogin boolean | всегда | Привилегия входа https://www.postgresql.org/docs/current/role-attributes.html. Пример: True | ||||
| member_of список / элементы=строка | всегда | Членство в роли https://www.postgresql.org/docs/current/role-membership.html. Пример: ['read_only_users'] | ||||
| superuser boolean | всегда | Пользователь является суперпользователем или нет. | ||||
| valid_until строка | всегда | Дата истечения срока действия пароля https://www.postgresql.org/docs/current/sql-alterrole.html. Пример: 9999-12-31T23:59:59.999999+00:00 | ||||
| settings словарь | всегда | Информация о параметрах сервера во время выполнения https://www.postgresql.org/docs/current/view-pg-settings.html. Пример: [{'work_mem': {'boot_val': '4096', 'context': 'user', 'max_val': '2147483647', 'min_val': '64', 'setting': '8192', 'sourcefile': '/var/lib/pgsql/10/data/postgresql.auto.conf', 'unit': 'kB', 'val_in_bytes': 4194304, 'vartype': 'integer'}}] | ||||
| boot_val строка | всегда | Значение параметра, предполагаемое при запуске сервера, если параметр не задан иначе. Пример: 4096 | ||||
| context строка | всегда | Контекст, необходимый для установки значения параметра. Дополнительная информация находится по адресу https://www.postgresql.org/docs/current/view-pg-settings.html. Пример: user | ||||
| max_val строка | всегда | Максимально допустимое значение параметра (null для нечисловых значений). Пример: 2147483647 | ||||
| min_val строка | всегда | Минимально допустимое значение параметра (null для нечисловых значений). Пример: 64 | ||||
| pending_restart boolean | всегда | True, если значение было изменено в конфигурационном файле, но требует перезагрузки; или false в противном случае. Возвращается только если settings передано. | ||||
| pretty_val строка | всегда | Значение в удобном для восприятия формате. Пример: 2MB | ||||
| setting строка | всегда | Текущее значение параметра. Пример: 49152 | ||||
| sourcefile строка | всегда | Конфигурационный файл, в котором было установлено текущее значение. Null для значений, установленных из источников, отличных от конфигурационных файлов, или при просмотре пользователем, который не является суперпользователем или членом pg_read_all_settings. Полезно при использовании директив include в конфигурационных файлах. Пример: /var/lib/pgsql/10/data/postgresql.auto.conf | ||||
| unit строка | всегда | Неявная единица измерения параметра. Пример: kB | ||||
| val_in_bytes целое число | если поддерживается | Текущее значение параметра в байтах. Пример: 2147483647 | ||||
| vartype строка | всегда | Тип параметра (bool, enum, integer, real или string). Пример: integer | ||||
| tablespaces словарь | всегда | Информация о пространствах имен таблиц https://www.postgresql.org/docs/current/catalog-pg-tablespace.html. Пример: [{'test': {'spcacl': '{postgres=C/postgres,andreyk=C/postgres}', 'spcoptions': ['seq_page_cost=1'], 'spcowner': 'postgres'}}] | ||||
| spcacl строка | всегда | Права доступа к пространству имен таблиц. Пример: {postgres=C/postgres,andreyk=C/postgres} | ||||
| spcoptions список / элементы=строка | всегда | Параметры уровня пространства имен таблиц. Пример: ['seq_page_cost=1'] | ||||
| spcowner строка | всегда | Владелец пространства имен таблиц. Пример: test_user | ||||
| version словарь | всегда | Версия сервера базы данных https://www.postgresql.org/support/versioning/. Пример: {'version': {'major': 10, 'minor': 6}} | ||||
| major целое число | всегда | Главная версия сервера. Пример: 11 | ||||
| minor целое число | всегда | Вспомогательная версия сервера. Пример: 1 | ||||
Авторы
- Андрей Клычков (@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_info_module.html