2019-05-02 17:01:03 +01:00
.. _readme:
2015-02-23 23:40:07 +05:30
2019-05-02 17:01:03 +01:00
postgres-formula
================
|img_travis| |img_sr|
.. |img_travis| image :: https://travis-ci.com/saltstack-formulas/template-formula.svg?branch=master
:alt: Travis CI Build Status
:scale: 100%
:target: https://travis-ci.com/saltstack-formulas/template-formula
.. |img_sr| image :: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
:alt: Semantic Release
:scale: 100%
:target: https://github.com/semantic-release/semantic-release
A formula to install and configure PostgreSQL server.
.. contents :: **Table of Contents**
General notes
-------------
See the full `SaltStack Formulas installation and usage instructions
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html> `_.
If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#writing-formulas> `_.
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 <http://semver.org/> `_ .
2015-02-23 23:40:07 +05:30
2019-05-02 17:01:03 +01:00
See `Formula Versioning Section <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#versioning> `_ for more details.
Contributing to this repo
-------------------------
**Commit message formatting is significant!!**
Please see :ref: `How to contribute <CONTRIBUTING>` for more details.
2015-02-23 23:40:07 +05:30
Available states
2019-05-02 17:01:03 +01:00
----------------
2015-02-23 23:40:07 +05:30
.. contents ::
2019-05-02 17:01:03 +01:00
:local:
2015-02-23 23:40:07 +05:30
`` postgres ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2017-01-09 16:05:48 +02:00
Installs and configures both PostgreSQL server and client with creation of various DB objects in
2018-03-08 11:41:19 +00:00
the cluster. This state applies to both Linux and MacOS.
2015-02-23 23:40:07 +05:30
2016-09-20 15:44:49 +03:00
`` postgres.client ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2018-03-08 11:41:19 +00:00
Installs the PostgreSQL client binaries and libraries on Linux.
2016-10-20 12:23:40 +03:00
`` postgres.manage ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^
2016-10-20 12:23:40 +03:00
2017-01-09 16:05:48 +02:00
Creates such DB objects as: users, tablespaces, databases, schemas and extensions.
See `` pillar.example `` file for details.
2015-02-23 23:40:07 +05:30
2016-09-20 15:44:49 +03:00
`` postgres.python ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^^
2015-04-21 13:40:01 -07:00
2018-03-08 11:41:19 +00:00
Installs the PostgreSQL adapter for Python on Linux.
2016-09-20 15:44:49 +03:00
2016-10-04 14:38:21 +03:00
`` postgres.server ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^
2016-10-04 14:38:21 +03:00
2018-03-08 11:41:19 +00:00
Installs the PostgreSQL server package on Linux, prepares the DB cluster and starts the server using
2017-01-09 16:05:48 +02:00
packaged init script, job or unit.
2019-01-14 13:33:09 +01:00
.. 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/
2017-01-09 16:05:48 +02:00
`` postgres.server.image ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^^^^^
2017-01-09 16:05:48 +02:00
2018-03-08 11:41:19 +00:00
Installs the PostgreSQL server package on Linux, prepares the DB cluster and starts the server by issuing
2017-01-09 16:05:48 +02:00
raw `` pg_ctl `` command. The `` postgres:bake_image `` Pillar toggles this behaviour. For example:
.. code :: yaml
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:
.. code :: console
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.
2016-10-04 14:38:21 +03:00
2016-09-20 15:44:49 +03:00
`` postgres.upstream ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^
2016-09-20 15:44:49 +03:00
Configures the PostgreSQL Official (upstream) repository on target system if
applicable.
2017-01-09 16:05:48 +02:00
The state relies on the `` postgres:use_upstream_repo `` Pillar value which could be set as following:
2016-09-20 15:44:49 +03:00
2016-09-23 17:50:57 +03:00
* `` True `` (default): adds the upstream repository to install packages from
* `` False `` : makes sure that the repository configuration is absent
2018-03-08 12:30:25 +00:00
* `` 'postgresapp' `` (MacOS) uses upstream PostgresApp package repository.
* `` 'homebrew' `` (MacOS) uses Homebrew postgres
2016-09-20 15:44:49 +03:00
2017-01-09 16:05:48 +02:00
The `` postgres:version `` Pillar controls which version of the PostgreSQL packages should be
2018-03-08 11:41:19 +00:00
installed from the upstream Linux repository. Defaults to `` 9.5 `` .
2015-04-21 13:40:01 -07:00
2018-07-24 21:44:09 +01:00
Removal states
2019-05-02 17:01:03 +01:00
--------------
2018-07-24 21:44:09 +01:00
`` postgres.dropped ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^
2018-07-24 21:44:09 +01:00
2018-07-25 19:48:37 +01:00
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 `` .
2018-07-24 21:44:09 +01:00
`` postgres.server.remove ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^^^^
2018-07-24 21:44:09 +01:00
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.
`` postgres.client.remove ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^^^^
2018-07-24 21:44:09 +01:00
Remove client package.
`` postgres.dev.remove ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^^^
2018-07-24 21:44:09 +01:00
Remove development and python packages.
2015-02-23 23:40:07 +05:30
Testing
2019-05-02 17:01:03 +01:00
-------
2015-02-23 23:40:07 +05:30
2019-04-30 17:00:23 +01:00
Linux testing is done with `` kitchen-salt `` .
2015-02-23 23:40:07 +05:30
`` kitchen converge ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2019-04-30 17:00:23 +01:00
Creates the docker instance and runs the `` postgres `` main state, ready for testing.
2015-02-23 23:40:07 +05:30
`` kitchen verify ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2019-04-30 17:00:23 +01:00
Runs the `` inspec `` tests on the actual instance.
`` kitchen destroy ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^
2019-04-30 17:00:23 +01:00
Removes the docker instance.
2015-02-23 23:40:07 +05:30
`` kitchen test ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2019-04-30 17:00:23 +01:00
Runs all of the stages above in one go: i.e. `` destroy `` + `` converge `` + `` verify `` + `` destroy `` .
2015-02-23 23:40:07 +05:30
`` kitchen login ``
2019-05-02 17:01:03 +01:00
^^^^^^^^^^^^^^^^^
2015-02-23 23:40:07 +05:30
2019-04-30 17:00:23 +01:00
Gives you SSH access to the instance for manual testing.
2017-01-09 16:05:48 +02:00
.. vim: fenc=utf-8 spell spl=en cc=100 tw=99 fo=want sts=2 sw=2 et