2016-09-03 15:15:56 +03:00
|
|
|
# -*- mode: yaml -*-
|
2016-06-05 12:55:00 +01:00
|
|
|
|
2014-01-26 04:36:15 +00:00
|
|
|
{% from "postgres/map.jinja" import postgres with context %}
|
2014-01-26 04:06:22 +00:00
|
|
|
|
2015-04-22 17:47:02 -05:00
|
|
|
{% if postgres.use_upstream_repo %}
|
2015-04-21 15:13:42 -07:00
|
|
|
include:
|
|
|
|
- postgres.upstream
|
2015-02-01 14:40:45 +00:00
|
|
|
{% endif %}
|
|
|
|
|
2016-05-25 12:12:48 -04:00
|
|
|
postgresql-installed:
|
2014-10-01 16:55:01 +02:00
|
|
|
pkg.installed:
|
2014-01-26 04:06:22 +00:00
|
|
|
- name: {{ postgres.pkg }}
|
2015-04-22 17:47:02 -05:00
|
|
|
- refresh: {{ postgres.use_upstream_repo }}
|
2014-07-27 22:04:57 -04:00
|
|
|
|
2016-05-25 12:12:48 -04:00
|
|
|
# make sure the data directory and contents have been initialized
|
|
|
|
postgresql-cluster-prepared:
|
2014-10-01 16:55:01 +02:00
|
|
|
cmd.run:
|
2016-06-07 11:52:47 +02:00
|
|
|
- cwd: /
|
2016-07-08 15:34:45 -05:00
|
|
|
- name: {{ postgres.prepare_cluster.command }}
|
|
|
|
- user: {{ postgres.prepare_cluster.user }}
|
2016-05-25 12:12:48 -04:00
|
|
|
- unless:
|
2016-07-08 15:34:45 -05:00
|
|
|
- {{ postgres.prepare_cluster.test }}
|
2016-05-25 12:12:48 -04:00
|
|
|
- require:
|
|
|
|
- pkg: postgresql-installed
|
2014-10-06 10:14:34 +02:00
|
|
|
- env:
|
2016-07-08 15:34:45 -05:00
|
|
|
{% for name, value in postgres.prepare_cluster.env.items() %}
|
|
|
|
{{ name }}: {{ value }}
|
|
|
|
{% endfor %}
|
2014-10-06 10:14:34 +02:00
|
|
|
|
2016-09-03 15:15:56 +03:00
|
|
|
postgresql-config-dir:
|
|
|
|
file.directory:
|
|
|
|
- name: {{ postgres.conf_dir }}
|
|
|
|
- user: {{ postgres.user }}
|
|
|
|
- group: {{ postgres.group }}
|
|
|
|
- makedirs: True
|
|
|
|
- require:
|
|
|
|
- pkg: postgresql-installed
|
|
|
|
- cmd: postgresql-cluster-prepared
|
|
|
|
|
2016-05-25 12:12:48 -04:00
|
|
|
postgresql-running:
|
2014-10-01 16:55:01 +02:00
|
|
|
service.running:
|
2016-05-25 11:12:53 +02:00
|
|
|
- enable: True
|
|
|
|
- reload: True
|
2014-02-09 17:50:23 +01:00
|
|
|
- name: {{ postgres.service }}
|
2016-05-25 12:12:48 -04:00
|
|
|
- reload: true
|
2014-02-09 17:50:23 +01:00
|
|
|
- require:
|
2016-05-25 12:12:48 -04:00
|
|
|
- cmd: postgresql-cluster-prepared
|
2014-07-27 22:04:57 -04:00
|
|
|
|
2016-09-02 11:14:09 +03:00
|
|
|
postgresql-extra-pkgs-installed:
|
2015-02-14 17:30:12 +00:00
|
|
|
pkg.installed:
|
2016-09-03 15:15:56 +03:00
|
|
|
- pkgs: {{ postgres.pkgs_extra|default([], True) }}
|
2015-02-14 17:30:12 +00:00
|
|
|
|
2015-04-22 17:47:02 -05:00
|
|
|
{% if postgres.postgresconf %}
|
2014-10-06 11:34:43 +02:00
|
|
|
postgresql-conf:
|
|
|
|
file.blockreplace:
|
|
|
|
- name: {{ postgres.conf_dir }}/postgresql.conf
|
|
|
|
- marker_start: "# Managed by SaltStack: listen_addresses: please do not edit"
|
|
|
|
- marker_end: "# Managed by SaltStack: end of salt managed zone --"
|
2015-03-12 16:14:34 -07:00
|
|
|
- content: |
|
2015-04-22 17:47:02 -05:00
|
|
|
{{ postgres.postgresconf|indent(8) }}
|
2014-10-06 11:34:43 +02:00
|
|
|
- show_changes: True
|
|
|
|
- append_if_not_found: True
|
2016-03-14 19:19:32 +00:00
|
|
|
{% if not postgres.postgresconf_backup|default(True) -%}
|
|
|
|
- backup: False
|
|
|
|
{% endif -%}
|
2014-10-06 11:34:43 +02:00
|
|
|
- watch_in:
|
2016-05-25 12:12:48 -04:00
|
|
|
- service: postgresql-running
|
|
|
|
- require:
|
|
|
|
- file: postgresql-config-dir
|
2014-10-06 11:34:43 +02:00
|
|
|
{% endif %}
|
|
|
|
|
2016-05-25 12:12:48 -04:00
|
|
|
postgresql-pg_hba:
|
2014-05-15 14:44:39 -07:00
|
|
|
file.managed:
|
2014-10-01 16:55:01 +02:00
|
|
|
- name: {{ postgres.conf_dir }}/pg_hba.conf
|
2015-04-22 17:47:02 -05:00
|
|
|
- source: {{ postgres['pg_hba.conf'] }}
|
2014-05-15 15:31:42 -07:00
|
|
|
- template: jinja
|
2016-05-23 12:19:32 -05:00
|
|
|
- user: {{ postgres.user }}
|
|
|
|
- group: {{ postgres.group }}
|
2014-05-15 14:44:39 -07:00
|
|
|
- mode: 644
|
|
|
|
- require:
|
2016-05-25 12:12:48 -04:00
|
|
|
- file: postgresql-config-dir
|
2014-05-16 11:03:35 -06:00
|
|
|
- watch_in:
|
2016-05-25 12:12:48 -04:00
|
|
|
- service: postgresql-running
|
2014-05-15 15:06:04 -07:00
|
|
|
|
2015-04-22 17:47:02 -05:00
|
|
|
{% for name, user in postgres.users.items() %}
|
2016-05-25 12:12:48 -04:00
|
|
|
postgresql-user-{{ name }}:
|
|
|
|
{% if user.get('ensure', 'present') == 'absent' %}
|
|
|
|
postgres_user.absent:
|
|
|
|
- name: {{ name }}
|
|
|
|
- user: {{ user.get('runas', postgres.user) }}
|
2016-07-11 13:18:17 -05:00
|
|
|
{% if user.get('user') %}
|
|
|
|
- db_user: {{ user.user }}
|
|
|
|
{% endif %}
|
2016-05-25 12:12:48 -04:00
|
|
|
{% else %}
|
2014-05-15 15:06:04 -07:00
|
|
|
postgres_user.present:
|
2014-07-27 22:04:57 -04:00
|
|
|
- name: {{ name }}
|
2015-04-22 17:47:02 -05:00
|
|
|
- createdb: {{ user.get('createdb', False) }}
|
2015-05-05 11:52:33 -07:00
|
|
|
- createroles: {{ user.get('createroles', False) }}
|
|
|
|
- createuser: {{ user.get('createuser', False) }}
|
|
|
|
- inherit: {{ user.get('inherit', True) }}
|
|
|
|
- replication: {{ user.get('replication', False) }}
|
2016-07-11 13:18:17 -05:00
|
|
|
- password: {{ user.password }}
|
2015-04-29 21:05:16 -04:00
|
|
|
- superuser: {{ user.get('superuser', False) }}
|
2016-07-11 13:18:17 -05:00
|
|
|
- user: {{ user.get('runas', postgres.user) }}
|
|
|
|
{% if user.get('user') %}
|
|
|
|
- db_user: {{ user.get('runas', postgres.user) }}
|
|
|
|
{% endif %}
|
2015-10-06 13:24:53 +02:00
|
|
|
{% endif %}
|
2016-05-25 12:12:48 -04:00
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
2016-07-11 13:18:17 -05:00
|
|
|
{% if user.get('user') %}
|
|
|
|
- postgres_user: postgresql-user-{{ user.user }}
|
|
|
|
{% endif %}
|
2016-05-25 12:12:48 -04:00
|
|
|
{% endfor %}
|
2014-05-15 15:06:04 -07:00
|
|
|
|
2016-07-11 13:18:17 -05:00
|
|
|
{% for name, tblspace in postgres.tablespaces.items() %}
|
|
|
|
postgresql-tablespace-dir-perms-{{ tblspace.directory}}:
|
2016-06-08 07:36:28 -03:00
|
|
|
file.directory:
|
2016-07-11 13:18:17 -05:00
|
|
|
- name: {{ tblspace.directory }}
|
|
|
|
- user: {{ postgres.user }}
|
|
|
|
- group: {{ postgres.group }}
|
2016-06-08 07:36:28 -03:00
|
|
|
- makedirs: True
|
|
|
|
- recurse:
|
|
|
|
- user
|
|
|
|
- group
|
|
|
|
|
|
|
|
postgresql-tablespace-{{ name }}:
|
|
|
|
postgres_tablespace.present:
|
|
|
|
- name: {{ name }}
|
2016-07-11 13:18:17 -05:00
|
|
|
- directory: {{ tblspace.directory }}
|
|
|
|
- user: {{ tblspace.get('runas', postgres.user) }}
|
2016-08-05 20:22:51 +02:00
|
|
|
{% if tblspace.get('db_user') %}
|
|
|
|
- db_user: {{ tblspace.db_user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if tblspace.get('db_password') %}
|
|
|
|
- db_password: {{ tblspace.db_password }}
|
|
|
|
{% endif %}
|
|
|
|
{% if tblspace.get('db_host') %}
|
|
|
|
- db_host: {{ tblspace.db_host }}
|
|
|
|
{% endif %}
|
|
|
|
{% if tblspace.get('db_port') %}
|
|
|
|
- db_port: {{ tblspace.db_port }}
|
2016-07-11 13:18:17 -05:00
|
|
|
{% endif %}
|
|
|
|
{% if tblspace.get('owner') %}
|
|
|
|
- owner: {{ tblspace.owner }}
|
|
|
|
{% endif %}
|
2016-06-08 07:36:28 -03:00
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
2016-07-11 13:18:17 -05:00
|
|
|
- file: postgresql-tablespace-dir-perms-{{ tblspace.directory}}
|
2016-06-08 07:36:28 -03:00
|
|
|
{% endfor %}
|
|
|
|
|
2015-04-22 17:47:02 -05:00
|
|
|
{% for name, db in postgres.databases.items() %}
|
2016-05-25 12:12:48 -04:00
|
|
|
postgresql-db-{{ name }}:
|
|
|
|
{% if db.get('ensure', 'present') == 'absent' %}
|
|
|
|
postgres_database.absent:
|
|
|
|
- name: {{ name }}
|
2016-07-11 13:18:17 -05:00
|
|
|
- user: {{ db.get('runas', postgres.user) }}
|
|
|
|
{% if db.get('user') %}
|
|
|
|
- db_user: {{ db.user }}
|
|
|
|
{% endif %}
|
2016-05-25 12:12:48 -04:00
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
|
|
|
{% else %}
|
2014-05-15 15:06:04 -07:00
|
|
|
postgres_database.present:
|
2014-07-27 22:04:57 -04:00
|
|
|
- name: {{ name }}
|
2016-07-19 10:10:07 -05:00
|
|
|
{% if 'encoding' in db %}
|
|
|
|
- encoding: {{ db.encoding }}
|
|
|
|
{% endif %}
|
|
|
|
{% if 'lc_ctype' in db %}
|
2016-08-02 22:50:16 +02:00
|
|
|
- lc_ctype: {{ db.lc_ctype }}
|
2016-07-19 10:10:07 -05:00
|
|
|
{% endif %}
|
|
|
|
{% if 'lc_collate' in db %}
|
|
|
|
- lc_collate: {{ db.lc_collate }}
|
|
|
|
{% endif %}
|
2015-04-22 17:47:02 -05:00
|
|
|
- template: {{ db.get('template', 'template0') }}
|
2016-06-08 07:36:28 -03:00
|
|
|
- tablespace: {{ db.get('tablespace', 'pg_default') }}
|
2015-04-22 17:47:02 -05:00
|
|
|
{% if db.get('owner') %}
|
2016-07-11 13:18:17 -05:00
|
|
|
- owner: {{ db.owner }}
|
2014-07-27 22:04:57 -04:00
|
|
|
{% endif %}
|
2016-05-23 12:19:32 -05:00
|
|
|
- user: {{ db.get('runas', postgres.user) }}
|
2016-08-05 20:22:51 +02:00
|
|
|
{% if db.get('db_user') %}
|
|
|
|
- db_user: {{ db.db_user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if db.get('db_password') %}
|
|
|
|
- db_password: {{ db.db_password }}
|
|
|
|
{% endif %}
|
|
|
|
{% if db.get('db_host') %}
|
|
|
|
- db_host: {{ db.db_host }}
|
|
|
|
{% endif %}
|
|
|
|
{% if db.get('db_port') %}
|
|
|
|
- db_port: {{ db.db_port }}
|
2016-07-11 13:18:17 -05:00
|
|
|
{% endif %}
|
2014-05-15 15:06:04 -07:00
|
|
|
- require:
|
2016-05-25 12:12:48 -04:00
|
|
|
- service: postgresql-running
|
2016-07-11 13:18:17 -05:00
|
|
|
{% if db.get('user') %}
|
|
|
|
- postgres_user: postgresql-user-{{ db.user }}
|
2016-07-08 15:34:45 -05:00
|
|
|
{% endif %}
|
|
|
|
{% if db.get('owner') %}
|
2016-07-11 13:18:17 -05:00
|
|
|
- postgres_user: postgresql-user-{{ db.owner }}
|
|
|
|
{% endif %}
|
|
|
|
{% if db.get('tablespace') %}
|
2016-08-05 20:22:51 +02:00
|
|
|
- postgres_tablespace: postgresql-tablespace-{{ db.get('tablespace') }}
|
2014-07-27 22:04:57 -04:00
|
|
|
{% endif %}
|
2015-07-23 17:51:24 +03:00
|
|
|
|
2016-07-11 13:18:17 -05:00
|
|
|
{# NOTE: postgres_schema doesn't have a 'runas' equiv. at all #}
|
|
|
|
{% for schema_name, schema in db.get('schemas', dict()).items() %}
|
|
|
|
postgresql-schema-{{ schema_name }}-for-db-{{ name }}:
|
|
|
|
{% if schema.get('ensure', 'present') == 'absent' %}
|
|
|
|
postgres_schema.absent:
|
|
|
|
- name: {{ schema_name }}
|
|
|
|
{% if schema.get('user') %}
|
|
|
|
- db_user: {{ schema.user }}
|
|
|
|
{% endif %}
|
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
|
|
|
{% else %}
|
2015-11-02 09:41:41 +03:00
|
|
|
postgres_schema.present:
|
2016-07-11 13:18:17 -05:00
|
|
|
- name: {{ schema_name }}
|
2015-11-02 09:41:41 +03:00
|
|
|
- dbname: {{ name }}
|
2016-07-11 13:18:17 -05:00
|
|
|
{% if schema.get('user') %}
|
|
|
|
- db_user: {{ schema.user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if schema.get('owner') %}
|
|
|
|
- owner: {{ schema.owner }}
|
|
|
|
{% endif %}
|
2016-05-25 12:12:48 -04:00
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
2016-07-11 13:18:17 -05:00
|
|
|
- postgres_database: postgresql-db-{{ name }}
|
|
|
|
{% if schema.get('user') %}
|
|
|
|
- postgres_user: postgresql-user-{{ schema.user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if schema.get('owner') %}
|
|
|
|
- postgres_user: postgresql-user-{{ schema.owner }}
|
|
|
|
{% endif %}
|
2015-11-02 09:41:41 +03:00
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
|
2016-07-11 13:18:17 -05:00
|
|
|
{% for ext_name, ext in db.get('extensions', dict()).items() %}
|
|
|
|
postgresql-ext-{{ ext_name }}-for-db-{{ name }}:
|
|
|
|
{% if ext.get('ensure', 'present') == 'absent' %}
|
|
|
|
postgres_extension.absent:
|
|
|
|
- name: {{ ext_name }}
|
|
|
|
- user: {{ ext.get('runas', postgres.user) }}
|
|
|
|
{% if ext.get('user') %}
|
|
|
|
- db_user: {{ ext.user }}
|
|
|
|
{% endif %}
|
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
|
|
|
{% else %}
|
2015-07-23 17:51:24 +03:00
|
|
|
postgres_extension.present:
|
2016-07-11 13:18:17 -05:00
|
|
|
- name: {{ ext_name }}
|
|
|
|
- user: {{ ext.get('runas', postgres.user) }}
|
|
|
|
{% if ext.get('user') %}
|
|
|
|
- db_user: {{ ext.user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if ext.get('version') %}
|
|
|
|
- ext_version: {{ ext.version }}
|
|
|
|
{% endif %}
|
|
|
|
{% if ext.get('schema') %}
|
|
|
|
- schema: {{ ext.schema }}
|
|
|
|
{% endif %}
|
2015-07-23 17:51:24 +03:00
|
|
|
- maintenance_db: {{ name }}
|
2016-05-25 12:12:48 -04:00
|
|
|
- require:
|
|
|
|
- service: postgresql-running
|
2016-07-11 13:18:17 -05:00
|
|
|
- postgres_database: postgresql-db-{{ name }}
|
|
|
|
{% if ext.get('user') %}
|
|
|
|
- postgres_user: postgresql-user-{{ ext.user }}
|
|
|
|
{% endif %}
|
|
|
|
{% if ext.get('schema') %}
|
2016-08-05 20:22:51 +02:00
|
|
|
- postgres_schema: postgresql-schema-{{ ext.schema }}-for-db-{{ name }}
|
2016-07-11 13:18:17 -05:00
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
2015-07-23 17:51:24 +03:00
|
|
|
{% endfor %}
|
2016-07-11 13:18:17 -05:00
|
|
|
|
2016-05-25 12:12:48 -04:00
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|