postgresql_info – Gather information about PostgreSQL servers¶
New in version 2.8.
Synopsis¶
Gathers information about PostgreSQL servers.
Requirements¶
The below requirements are needed on the host that executes this module.
psycopg2
Parameters¶
Parameter | Choices/Defaults | Comments |
---|---|---|
ca_cert
string
|
Specifies the name of a file containing SSL certificate authority (CA) certificate(s).
If the file exists, the server's certificate will be verified to be signed by one of these authorities.
aliases: ssl_rootcert |
|
db
string
|
Name of database to connect.
aliases: login_db |
|
filter
list
|
Limit the collected information by comma separated string or YAML list.
Allowable values are
version , databases , settings , tablespaces , roles , replications , repl_slots .By default, collects all subsets.
You can use shell-style (fnmatch) wildcard to pass groups of values (see Examples).
You can use '!' before value (for example,
!settings ) to exclude it from the information.If you pass including and excluding values to the filter, for example, filter=!settings,ver, the excluding values will be ignored.
|
|
login_host
string
|
Host running the database.
|
|
login_password
string
|
The password used to authenticate with.
|
|
login_unix_socket
string
|
Path to a Unix domain socket for local connections.
|
|
login_user
string
|
Default: "postgres"
|
The username used to authenticate with.
|
port
integer
|
Default: 5432
|
Database port to connect to.
aliases: login_port |
session_role
string
|
Switch to session_role after connecting. The specified session_role must be a role that the current login_user is a member of.
Permissions checking for SQL commands is carried out as though the session_role were the one that had logged in originally.
|
|
ssl_mode
string
|
|
Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server.
See https://www.postgresql.org/docs/current/static/libpq-ssl.html for more information on the modes.
Default of
prefer matches libpq default. |
Notes¶
Note
The default authentication assumes that you are either logging in as or sudo’ing to the postgres account on the host.
login_user or session_role must be able to read from pg_authid.
To avoid “Peer authentication failed for user postgres” error, use postgres user as a become_user.
This module uses psycopg2, a Python PostgreSQL database adapter. You must ensure that psycopg2 is installed on the host before using this module. If the remote host is the PostgreSQL server (which is the default case), then PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, install the postgresql, libpq-dev, and python-psycopg2 packages on the remote host before using this module.
The default authentication assumes that you are either logging in as or sudo’ing to the
postgres
account on the host.This module uses psycopg2, a Python PostgreSQL database adapter. You must ensure that psycopg2 is installed on the host before using this module. If the remote host is the PostgreSQL server (which is the default case), then PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, install the
postgresql
,libpq-dev
, andpython-psycopg2
packages on the remote host before using this module.The ca_cert parameter requires at least Postgres version 8.4 and psycopg2 version 2.4.3.
Examples¶
# 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
postgresql_info:
filter: ver*,ext*
- name: Collect all info except settings and roles
become: yes
become_user: postgres
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
postgresql_info:
db: postgres
filter:
- tablesp*
- repl_sl*
- name: Collect all info except databases
become: yes
become_user: postgres
postgresql_info:
filter:
- "!databases"
Return Values¶
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description | ||||
---|---|---|---|---|---|---|
databases
dictionary
|
always |
Information about databases.
Sample:
[{'postgres': {'access_priv': '', 'collate': 'en_US.UTF-8', 'ctype': 'en_US.UTF-8', 'encoding': 'UTF8', 'owner': 'postgres', 'size': '7997 kB'}}]
|
||||
database_name
dictionary
|
always |
Database name.
Sample:
template1
|
||||
access_priv
string
|
always |
Database access privileges.
Sample:
=c/postgres_npostgres=CTc/postgres
|
||||
collate
string
|
always |
Database collation https://www.postgresql.org/docs/current/collation.html.
Sample:
en_US.UTF-8
|
||||
ctype
string
|
always |
Database LC_CTYPE https://www.postgresql.org/docs/current/multibyte.html.
Sample:
en_US.UTF-8
|
||||
encoding
string
|
always |
Database encoding https://www.postgresql.org/docs/current/multibyte.html.
Sample:
UTF8
|
||||
extensions
dictionary
|
always |
Sample:
[{'plpgsql': {'description': 'PL/pgSQL procedural language', 'extversion': {'major': 1, 'minor': 0}}}]
|
||||
extdescription
string
|
if existent |
Extension description.
Sample:
PL/pgSQL procedural language
|
||||
extversion
dictionary
|
always |
Extension description.
|
||||
major
integer
|
always |
Extension major version.
Sample:
1
|
||||
minor
integer
|
always |
Extension minor version.
|
||||
nspname
string
|
always |
Namespace where the extension is.
Sample:
pg_catalog
|
||||
languages
dictionary
|
always |
Procedural languages https://www.postgresql.org/docs/current/xplang.html.
Sample:
{'sql': {'lanacl': '', 'lanowner': 'postgres'}}
|
||||
lanacl
string
|
always |
Language access privileges https://www.postgresql.org/docs/current/catalog-pg-language.html.
Sample:
{postgres=UC/postgres,=U/postgres}
|
||||
lanowner
string
|
always |
Language owner https://www.postgresql.org/docs/current/catalog-pg-language.html.
Sample:
postgres
|
||||
namespaces
dictionary
|
always |
Namespaces (schema) https://www.postgresql.org/docs/current/sql-createschema.html.
Sample:
{'pg_catalog': {'nspacl': '{postgres=UC/postgres,=U/postgres}', 'nspowner': 'postgres'}}
|
||||
nspacl
string
|
always |
Access privileges https://www.postgresql.org/docs/current/catalog-pg-namespace.html.
Sample:
{postgres=UC/postgres,=U/postgres}
|
||||
nspowner
string
|
always |
Sample:
postgres
|
||||
owner
string
|
always |
Database owner https://www.postgresql.org/docs/current/sql-createdatabase.html.
Sample:
postgres
|
||||
size
string
|
always |
Database size in bytes.
Sample:
8189415
|
||||
pending_restart_settings
list
|
always |
List of settings that are pending restart to be set.
Sample:
['shared_buffers']
|
||||
repl_slots
dictionary
|
if existent |
Replication slots (available in 9.4 and later) https://www.postgresql.org/docs/current/view-pg-replication-slots.html.
Sample:
{'slot0': {'active': False, 'database': None, 'plugin': None, 'slot_type': 'physical'}}
|
||||
active
boolean
|
always |
True means that a receiver has connected to it, and it is currently reserving archives.
Sample:
True
|
||||
database
string
|
always |
Database name this slot is associated with, or null.
Sample:
acme
|
||||
plugin
string
|
always |
Base name of the shared object containing the output plugin this logical slot is using, or null for physical slots.
Sample:
pgoutput
|
||||
slot_type
string
|
always |
The slot type - physical or logical.
Sample:
logical
|
||||
replications
dictionary
|
if pg_stat_replication view existent |
Information about the current replications by process PIDs https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE.
Sample:
[{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
|
if existent |
Name of the application that is connected to this WAL sender.
Sample:
acme_srv
|
||||
backend_start
string
|
always |
Time when this process was started, i.e., when the client connected to this WAL sender.
Sample:
2019-02-03 00:14:33.908593+03
|
||||
client_addr
string
|
always |
IP address of the client connected to this WAL sender.
If this field is null, it indicates that the client is connected via a Unix socket on the server machine.
Sample:
10.0.0.101
|
||||
client_hostname
string
|
always |
Host name of the connected client, as reported by a reverse DNS lookup of client_addr.
This field will only be non-null for IP connections, and only when log_hostname is enabled.
Sample:
dbsrv1
|
||||
state
string
|
always |
Current WAL sender state.
Sample:
streaming
|
||||
usename
string
|
always |
Name of the user logged into this WAL sender process ('usename' is a column name in pg_stat_replication view).
Sample:
replication_user
|
||||
roles
dictionary
|
always |
Information about roles https://www.postgresql.org/docs/current/user-manag.html.
Sample:
[{'test_role': {'canlogin': True, 'member_of': ['user_ro'], 'superuser': False, 'valid_until': '9999-12-31T23:59:59.999999+00:00'}}]
|
||||
canlogin
boolean
|
always |
Login privilege https://www.postgresql.org/docs/current/role-attributes.html.
Sample:
True
|
||||
member_of
list
|
always |
Role membership https://www.postgresql.org/docs/current/role-membership.html.
Sample:
['read_only_users']
|
||||
superuser
boolean
|
always |
User is a superuser or not.
|
||||
valid_until
string
|
always |
Password expiration date https://www.postgresql.org/docs/current/sql-alterrole.html.
Sample:
9999-12-31T23:59:59.999999+00:00
|
||||
settings
dictionary
|
always |
Information about run-time server parameters https://www.postgresql.org/docs/current/view-pg-settings.html.
Sample:
[{'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', 'vartype': 'integer', 'val_in_bytes': 4194304}}]
|
||||
boot_val
string
|
always |
Parameter value assumed at server startup if the parameter is not otherwise set.
Sample:
4096
|
||||
context
string
|
always |
Context required to set the parameter's value.
For more information see https://www.postgresql.org/docs/current/view-pg-settings.html.
Sample:
user
|
||||
max_val
string
|
always |
Maximum allowed value of the parameter (null for non-numeric values).
Sample:
2147483647
|
||||
min_val
string
|
always |
Minimum allowed value of the parameter (null for non-numeric values).
Sample:
64
|
||||
pending_restart
boolean
|
always |
True if the value has been changed in the configuration file but needs a restart; or false otherwise.
Returns only if
settings is passed. |
||||
pretty_val
string
|
always |
Value presented in the pretty form.
Sample:
2MB
|
||||
setting
string
|
always |
Current value of the parameter.
Sample:
49152
|
||||
sourcefile
string
|
always |
Configuration file the current value was set in.
Null for values set from sources other than configuration files, or when examined by a user who is neither a superuser or a member of pg_read_all_settings.
Helpful when using include directives in configuration files.
Sample:
/var/lib/pgsql/10/data/postgresql.auto.conf
|
||||
unit
string
|
always |
Implicit unit of the parameter.
Sample:
kB
|
||||
val_in_bytes
integer
|
if supported |
Current value of the parameter in bytes.
Sample:
2147483647
|
||||
vartype
string
|
always |
Parameter type (bool, enum, integer, real, or string).
Sample:
integer
|
||||
tablespaces
dictionary
|
always |
Information about tablespaces https://www.postgresql.org/docs/current/catalog-pg-tablespace.html.
Sample:
[{'test': {'spcacl': '{postgres=C/postgres,andreyk=C/postgres}', 'spcoptions': ['seq_page_cost=1'], 'spcowner': 'postgres'}}]
|
||||
spcacl
string
|
always |
Tablespace access privileges.
Sample:
{postgres=C/postgres,andreyk=C/postgres}
|
||||
spcoptions
list
|
always |
Tablespace-level options.
Sample:
['seq_page_cost=1']
|
||||
spcowner
string
|
always |
Owner of the tablespace.
Sample:
test_user
|
||||
version
dictionary
|
always |
Database server version https://www.postgresql.org/support/versioning/.
Sample:
{'version': {'major': 10, 'minor': 6}}
|
||||
major
integer
|
always |
Major server version.
Sample:
11
|
||||
minor
integer
|
always |
Minor server version.
Sample:
1
|
Status¶
This module is not guaranteed to have a backwards compatible interface. [preview]
This module is maintained by the Ansible Community. [community]