Quickstart¶
Let’s get started, using the command-line interface:
$ pglift instance create main --port=5433 --surole-password
Super-user role password:
Repeat for confirmation:
INFO initializing PostgreSQL
INFO configuring PostgreSQL
INFO configuring PostgreSQL authentication
INFO starting PostgreSQL 14/main
This commands simply creates a PostgreSQL cluster, by default with no satellite components.
We can inspect its logs:
$ pglift instance logs main
INFO reading logs of instance 14/main from ~/.local/share/pglift/srv
/pgsql/14/main/data/log/postgresql-2022-02-14_142151.log
2022-02-14 14:21:51.629 CET [55556] LOG: starting PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2022-02-14 14:21:51.630 CET [55556] LOG: listening on IPv6 address "::1", port 5433
2022-02-14 14:21:51.630 CET [55556] LOG: listening on IPv4 address "127.0.0.1", port 5433
2022-02-14 14:21:51.632 CET [55556] LOG: listening on Unix socket "~/.local/share/pglift/run/postgresql/.s.PGSQL.5433"
2022-02-14 14:21:51.636 CET [55558] LOG: database system was shut down at 2022-02-14 14:21:51 CET
2022-02-14 14:21:51.642 CET [55556] LOG: database system is ready to accept connections
Create some objects:
$ pglift role -i main create dba --validity="2023-01-01T00:00:00" --login --password
Role password:
Repeat for confirmation:
INFO creating role 'dba'
$ pglift database -i main create myapp --owner=dba
INFO creating 'myapp' database on instance 14/main
And eventually drop the instance:
$ pglift instance drop main
INFO dropping instance 14/main
> Confirm complete deletion of instance 14/main? [y/n] (y): y
INFO stopping PostgreSQL 14/main
INFO deleting PostgreSQL cluster
Now more interestingly, let’s add some configuration to pglift by writing the following file:
postgresql:
auth:
host: scram-sha-256
pgbackrest:
repository:
path: /srv/backups
mode: path
prometheus:
execpath: /usr/bin/prometheus-postgres-exporter
powa: {}
systemd: {}
in which, we configure PostgreSQL host-based authentication, enable pgbackrest and prometheus satellite services and finally activate systemd as service manager and scheduler.
Note
Further operation requires an extra “installation” step, mostly in order to prepare the site:
$ pglift site-configure install
INFO installed pglift-postgres_exporter@.service systemd unit at
~/.local/share/systemd/user/pglift-postgres_exporter@.service
INFO installed pglift-backup@.service systemd unit at
~/.local/share/systemd/user/pglift-backup@.service
INFO installed pglift-backup@.timer systemd unit at
~/.local/share/systemd/user/pglift-backup@.timer
INFO installed pglift-postgresql@.service systemd unit at
~/.local/share/systemd/user/pglift-postgresql@.service
INFO installing base pgbackrest configuration
INFO creating pgbackrest include directory
INFO creating pgbackrest repository backups and archive directory
INFO creating common pgbackrest directories
INFO creating postgresql log directory
Now let’s create again our main
instance:
$ pglift instance create main --port=5433 --surole-password \
--data-checksums --pgbackrest-stanza=app
Super-user role password:
Repeat for confirmation:
INFO initializing PostgreSQL
INFO configuring PostgreSQL authentication
INFO configuring PostgreSQL
INFO starting PostgreSQL 14/main
INFO creating role 'powa'
INFO creating role 'prometheus'
INFO creating role 'backup'
INFO creating 'powa' database in 14/main
INFO creating extension 'btree_gist' in database powa
INFO creating extension 'pg_qualstats' in database powa
INFO creating extension 'pg_stat_statements' in database powa
INFO creating extension 'pg_stat_kcache' in database powa
INFO creating extension 'powa' in database powa
INFO configuring Prometheus postgres_exporter 14-main
INFO configuring pgBackRest stanza 'app' for pg1-path=...
INFO creating pgBackRest stanza app
INFO starting Prometheus postgres_exporter 14-main
We notice that a Prometheus postgres_exporter service and a pgBackRest repository, user and configuration are now set up alongside our PostgreSQL instance.
As systemd was defined as service manager and scheduler, we can see the following units defined:
$ systemctl --user list-units "pglift-*"
UNIT LOAD ACTIVE SUB DESCRIPTION
pglift-postgres_exporter@14-main.service loaded active running Prometheus exporter 14-main database server metrics
pglift-postgresql@14-main.service loaded active running PostgreSQL 14-main database server
pglift-backup@14-main.timer loaded active waiting Backup 14-main PostgreSQL database instance
For more, head out to more in-depth tutorials and user guides.