Links

PostgreSQL

Reference for the humanitec/postgres driver
This provisions a new PostgreSQL database in an existing PostgreSQL instance. The instance must be reachable from Humanitec IPs.
Property
Description
Resource Type
postgres
Account Type
None

Inputs

Values

Name
Type
Description
host
string
The IP Address or hostname that the instance is available on.
port
integer
The port the instance is listening on.
name
string
[Optional] The name of the maintenance database to connect to. Defaults to postgres.
append_host_to_user
boolean
[Optional] Azure Databases for Postgres and MySQL require usernames to have @servername appended to them. Set this to true for the driver to append this automatically. (See: Azure Database connection strings)
template_name
string
[Optional] If provided, the driver will use this database name as a template. See CREATE DATABASE.

Secrets

Name
Type
Description
dbcredentials
object
An object holding username and password properties for the PostgreSQL super user.

Notes

Automatic population of database

PostgreSQL supports creating databases based on templates. (See CREATE DATABASE) This functionality can be used to effectively pre-populate a database as it is provisioned.
It is important to be familiar with the constraints of template databases in PostgreSQL. The documentation states:
Although it is possible to copy a database other than template1 by specifying its name as the template, this is not (yet) intended as a general-purpose "COPY DATABASE" facility. The principal limitation is that no other sessions can be connected to the template database while it is being copied. CREATE DATABASE will fail if any other connection exists when it starts; otherwise, new connections to the template database are locked out until CREATE DATABASE completes.
For more information on managing template DBs, see https://www.postgresql.org/docs/current/manage-ag-templatedbs.html

Example

To create a fresh PostgreSQL database in an instance available at dev-postgres.example.com:
curl https://api.humanitec.io/orgs/${HUMANITEC_ORG}/resources/defs \
-X POST \
-H "Authorization: Bearer ${HUMANITEC_TOKEN}" \
-H "Content-Type: application/json" \
--data-binary '
{
"id": "dev-postgres",
"name": "Dev PostgreSQL",
"type": "postgres",
"criteria": [
{
"env_type": "development"
}
],
"driver_type": "humanitec/postgres",
"driver_inputs": {
"values": {
"host": "dev-postgres.example.com",
"port": 5432,
"name": "postgres"
},
"secrets": {
"dbcredentials": {
"username": "postgres",
"password": "53cr3t-P455w0rd"
}
}
}
}'
Last modified 8mo ago