The below requirements are needed on the host that executes this module.
| 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 | |
| conn_limit integer added in 2.4 | Specifies the user (role) connection limit. | |
| db string | Name of database to connect to and where user's permissions will be granted. aliases: login_db | |
| encrypted boolean |
| Whether the password is stored hashed in the database. Passwords can be passed already hashed or unhashed, and postgresql ensures the stored password is hashed when encrypted is set.Note: Postgresql 10 and newer doesn't support unhashed passwords. Previous to Ansible 2.6, this was no by default. |
| expires string | The date at which the user's password is to expire. If set to 'infinity', user's password never expire.Note that this value should be a valid SQL date and time type. | |
| fail_on_user boolean |
| If yes, fail when user (role) can't be removed. Otherwise just log and continue.aliases: fail_on_role |
| groups list / elements=string added in 2.9 | The list of groups (roles) that need to be granted to the user. | |
| 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. |
| name string / required | Name of the user (role) to add or remove. aliases: user | |
| no_password_changes boolean |
| If yes, don't inspect database for password changes. Effective when pg_authid is not accessible (such as AWS RDS). Otherwise, make password changes as necessary. |
| password string | Set the user's password, before 1.4 this was required. Password can be passed unhashed or hashed (MD5-hashed). Unhashed password will automatically be hashed when saved into the database if encrypted parameter is set, otherwise it will be save in plain text format.When passing a hashed password it must be generated with the format 'str["md5"] + md5[ password + username ]', resulting in a total of 35 characters. An easy way to do this is echo "md5$(echo -n 'verysecretpasswordJOE' | md5sum | awk '{print $1}'").Note that if the provided password string is already in MD5-hashed format, then it is used as-is, regardless of encrypted parameter. | |
| port integer | Default: 5432 | Database port to connect to. aliases: login_port |
| priv string | Slash-separated PostgreSQL privileges string: priv1/priv2, where privileges can be defined for database ( allowed options - 'CREATE', 'CONNECT', 'TEMPORARY', 'TEMP', 'ALL'. For example CONNECT ) or for table ( allowed options - 'SELECT', 'INSERT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER', 'ALL'. For example table:SELECT ). Mixed example of this string: CONNECT/CREATE/table1:SELECT/table2:INSERT. | |
| role_attr_flags string |
| PostgreSQL user attributes string in the format: CREATEDB,CREATEROLE,SUPERUSER. Note that '[NO]CREATEUSER' is deprecated. To create a simple role for using it like a group, use NOLOGIN flag. |
| session_role string added in 2.8 | 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. |
| state string |
| The user (role) state. |
Note
postgres account on the host.See also
- 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: ""
- name: Create user test and grant group user_ro and user_rw to it
postgresql_user:
name: test
groups:
- user_ro
- user_rw
Common return values are documented here, the following are the fields unique to this module:
| Key | Returned | Description |
|---|---|---|
| queries list added in 2.8 | always | List of executed queries. Sample: ['CREATE USER "alice"', 'GRANT CONNECT ON DATABASE "acme" TO "alice"'] |
Hint
If you notice any issues in this documentation, you can edit this document to improve it.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/postgresql_user_module.html