A formula to install and configure PostgreSQL server.
Table of Contents
See the full SaltStack Formulas installation and usage instructions.
If you are interested in writing or contributing to formulas, please pay attention to the Writing Formula Section.
If you want to use this formula, please pay attention to the FORMULA
file and/or git tag
,
which contains the currently released version. This formula is versioned according to Semantic Versioning.
See Formula Versioning Section for more details.
Commit message formatting is significant!!
Please see How to contribute for more details.
Installs and configures both PostgreSQL server and client with creation of various DB objects in the cluster. This state applies to both Linux and MacOS.
Installs the PostgreSQL client binaries and libraries on Linux.
Creates such DB objects as: users, tablespaces, databases, schemas and extensions.
See pillar.example
file for details.
Installs the PostgreSQL adapter for Python on Linux.
Installs the PostgreSQL server package on Linux, prepares the DB cluster and starts the server using packaged init script, job or unit.
Note
For PostgreSQL server before version 10 to work inside a FreeBSD Jail
set sysvshm=new
and sysvsem=new
.
DO NOT SET allow.sysvipc=1
. It defeats the purpose of using Jails.
Further information: https://blog.tyk.nu/blog/freebsd-jails-and-sysv-ipc/
Installs the PostgreSQL server package on Linux, prepares the DB cluster and starts the server by issuing
raw pg_ctl
command. The postgres:bake_image
Pillar toggles this behaviour. For example:
postgres:
bake_image: True
If set True
, then it becomes possible to fully provision PostgreSQL with all supported entities
from postgres.manage
state during the build ("baking") of AMI / VM / Container images (using
Packer, Docker or similar tools), i.e. when OS init
process is not available to start the
service and enable it on "boot" of resulting appliance.
Also it allows to make Docker images with PostgreSQL using functionality being available since Salt 2016.11.0 release:
salt 'minion.with.docker' dockerng.sls_build my-postgres base=centos/systemd mods=postgres
If a lookup dictionary or Pillar has postgres:bake_image
set False
(this is default), it is
equivalent of applying postgres.server
state.
Configures the PostgreSQL Official (upstream) repository on target system if applicable.
The state relies on the postgres:use_upstream_repo
Pillar value which could be set as following:
True
(default): adds the upstream repository to install packages fromFalse
: makes sure that the repository configuration is absent'postgresapp'
(MacOS) uses upstream PostgresApp package repository.'homebrew'
(MacOS) uses Homebrew postgres
The postgres:version
Pillar controls which version of the PostgreSQL packages should be
installed from the upstream Linux repository. Defaults to 9.5
.
Meta state to remove Postgres software. By default the release installed by formula is targeted only. To target multiple releases, set pillar postgres.remove.multiple_releases: True
.
Remove server, lib, and contrib packages. The postgres.server.remove
will retain data by default (no data loss) - set pillar postgres.remove.data: True
to remove data and configuration directories also.
Remove client package.
Remove development and python packages.
Linux testing is done with kitchen-salt
.
Creates the docker instance and runs the postgres
main state, ready for testing.
Runs the inspec
tests on the actual instance.
Removes the docker instance.
Runs all of the stages above in one go: i.e. destroy
+ converge
+ verify
+ destroy
.
Gives you SSH access to the instance for manual testing.