postgres-formula
1. General notes
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.
2. Contributing to this repo
Commit message formatting is significant!!
Please see How to contribute for more details.
3. Available states
3.1. postgres
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.
3.3. postgres.manage
Creates such DB objects as: users, tablespaces, databases, schemas and
extensions. See pillar.example
file for details.
3.5. postgres.server
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/
Running inside a container (using Packer, Docker or similar tools),
when OS init
process is not available to start the service and enable
it on "boot", set pillar value:
postgres:
bake_image: True
This toggles starting PostgreSQL daemon by issuing raw pg_ctl
or
pg_ctlcluster
command.
3.6. postgres.upstream
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 from -
False
: 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
.
4. Removal states
4.1. postgres.dropped
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
.
5. Testing
6. Testing with Vagrant
Windows/FreeBSD/OpenBSD testing is done with kitchen-salt
.
6.2. Setup
$ gem install bundler
$ bundle install --with=vagrant
$ bin/kitchen test [platform]
Where [platform]
is the platform name defined in
kitchen.vagrant.yml
, e.g. windows-81-latest-py3
.
6.3. Note
When testing using Vagrant you must set the environment variable
KITCHEN_LOCAL_YAML
to kitchen.vagrant.yml
. For example:
$ KITCHEN_LOCAL_YAML=kitchen.vagrant.yml bin/kitchen test # Alternatively,
$ export KITCHEN_LOCAL_YAML=kitchen.vagrant.yml
$ bin/kitchen test
Then run the following commands as needed.
6.4. bin/kitchen converge
Creates the Vagrant instance and runs the postgres
main state, ready
for testing.