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-02-26 22:58:54 +01:00
|
|
|
{% if salt['pillar.get']('postgres:use_upstream_repo') %}
|
2015-02-01 14:40:45 +00:00
|
|
|
install-postgresql-repo:
|
|
|
|
pkgrepo.managed:
|
|
|
|
- humanname: PostgreSQL Official Repository
|
|
|
|
- name: {{ postgres.pkg_repo }}
|
|
|
|
- keyid: B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
|
|
|
|
- keyserver: keyserver.ubuntu.com
|
|
|
|
- file: {{ postgres.pkg_repo_file }}
|
|
|
|
- require_in:
|
|
|
|
- install-postgresql
|
|
|
|
{% endif %}
|
|
|
|
|
2014-10-01 16:55:01 +02:00
|
|
|
install-postgresql:
|
|
|
|
pkg.installed:
|
2014-01-26 04:06:22 +00:00
|
|
|
- name: {{ postgres.pkg }}
|
2015-02-26 22:58:54 +01:00
|
|
|
- refresh: {{ salt['pillar.get']('postgres:use_upstream_repo', False) }}
|
2014-07-27 22:04:57 -04:00
|
|
|
|
2014-10-01 16:55:01 +02:00
|
|
|
{% if postgres.create_cluster != False %}
|
|
|
|
create-postgresql-cluster:
|
|
|
|
cmd.run:
|
|
|
|
- cwd: /
|
|
|
|
- user: root
|
2014-10-06 10:38:12 +02:00
|
|
|
- name: pg_createcluster {{ postgres.version }} main --start
|
2014-10-01 16:55:01 +02:00
|
|
|
- unless: test -f {{ postgres.conf_dir }}/postgresql.conf
|
|
|
|
- env:
|
|
|
|
LC_ALL: C.UTF-8
|
|
|
|
{% endif %}
|
|
|
|
|
2014-10-06 10:14:34 +02:00
|
|
|
{% if postgres.init_db != False %}
|
|
|
|
postgresql-initdb:
|
|
|
|
cmd.run:
|
|
|
|
- cwd: /
|
|
|
|
- user: root
|
|
|
|
- name: service postgresql initdb
|
|
|
|
- unless: test -f {{ postgres.conf_dir }}/postgresql.conf
|
|
|
|
- env:
|
|
|
|
LC_ALL: C.UTF-8
|
|
|
|
{% endif %}
|
|
|
|
|
2014-10-01 16:55:01 +02:00
|
|
|
run-postgresql:
|
|
|
|
service.running:
|
2014-02-09 17:50:23 +01:00
|
|
|
- enable: true
|
|
|
|
- name: {{ postgres.service }}
|
|
|
|
- require:
|
|
|
|
- pkg: {{ postgres.pkg }}
|
2014-07-27 22:04:57 -04:00
|
|
|
|
2014-10-06 10:14:34 +02:00
|
|
|
{% if postgres.pkg_dev != False %}
|
2014-10-01 16:55:01 +02:00
|
|
|
install-postgres-dev-package:
|
|
|
|
pkg.installed:
|
|
|
|
- name: {{ postgres.pkg_dev }}
|
2014-10-06 10:14:34 +02:00
|
|
|
{% endif %}
|
2014-07-27 01:58:18 -04:00
|
|
|
|
2015-01-04 00:02:41 +01:00
|
|
|
{% if postgres.pkg_libpq_dev != False %}
|
2015-01-29 18:26:47 -05:00
|
|
|
install-postgres-libpq-dev:
|
|
|
|
pkg.installed:
|
|
|
|
- name: {{ postgres.pkg_libpq_dev }}
|
2015-01-04 00:02:41 +01:00
|
|
|
{% endif %}
|
2013-07-16 10:23:53 -06:00
|
|
|
|
2015-02-14 17:30:12 +00:00
|
|
|
{% if postgres.pkg_contrib != False %}
|
|
|
|
install-postgres-contrib:
|
|
|
|
pkg.installed:
|
|
|
|
- name: {{ postgres.pkg_contrib }}
|
|
|
|
{% endif %}
|
|
|
|
|
2014-10-06 11:34:43 +02:00
|
|
|
{% if 'postgresconf' in pillar.get('postgres', {}) %}
|
|
|
|
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: |
|
|
|
|
{{ salt['pillar.get']('postgres:postgresconf') | indent(8) }}
|
2014-10-06 11:34:43 +02:00
|
|
|
- show_changes: True
|
|
|
|
- append_if_not_found: True
|
|
|
|
- watch_in:
|
|
|
|
- service: postgresql
|
|
|
|
{% endif %}
|
|
|
|
|
2014-05-29 13:01:39 -06:00
|
|
|
{% if 'pg_hba.conf' in pillar.get('postgres', {}) %}
|
2014-05-15 14:44:39 -07:00
|
|
|
pg_hba.conf:
|
|
|
|
file.managed:
|
2014-10-01 16:55:01 +02:00
|
|
|
- name: {{ postgres.conf_dir }}/pg_hba.conf
|
2014-07-13 19:17:24 +00:00
|
|
|
- source: {{ salt['pillar.get']('postgres:pg_hba.conf', 'salt://postgres/pg_hba.conf') }}
|
2014-05-15 15:31:42 -07:00
|
|
|
- template: jinja
|
2014-05-15 14:44:39 -07:00
|
|
|
- user: postgres
|
|
|
|
- group: postgres
|
|
|
|
- mode: 644
|
|
|
|
- require:
|
2014-05-15 15:06:04 -07:00
|
|
|
- pkg: {{ postgres.pkg }}
|
2014-05-16 11:03:35 -06:00
|
|
|
- watch_in:
|
|
|
|
- service: postgresql
|
2014-05-16 10:56:10 -06:00
|
|
|
{% endif %}
|
2014-05-15 15:06:04 -07:00
|
|
|
|
2014-07-27 22:04:57 -04:00
|
|
|
{% if 'users' in pillar.get('postgres', {}) %}
|
|
|
|
{% for name, user in salt['pillar.get']('postgres:users').items() %}
|
|
|
|
postgres-user-{{ name }}:
|
2014-05-15 15:06:04 -07:00
|
|
|
postgres_user.present:
|
2014-07-27 22:04:57 -04:00
|
|
|
- name: {{ name }}
|
|
|
|
- createdb: {{ salt['pillar.get']('postgres:users:' + name + ':createdb', False) }}
|
|
|
|
- password: {{ salt['pillar.get']('postgres:users:' + name + ':password', 'changethis') }}
|
2014-05-15 15:06:04 -07:00
|
|
|
- runas: postgres
|
|
|
|
- require:
|
|
|
|
- service: {{ postgres.service }}
|
2014-07-27 22:04:57 -04:00
|
|
|
{% endfor%}
|
|
|
|
{% endif %}
|
2014-05-15 15:06:04 -07:00
|
|
|
|
2014-07-27 22:04:57 -04:00
|
|
|
{% if 'databases' in pillar.get('postgres', {}) %}
|
|
|
|
{% for name, db in salt['pillar.get']('postgres:databases').items() %}
|
|
|
|
postgres-db-{{ name }}:
|
2014-05-15 15:06:04 -07:00
|
|
|
postgres_database.present:
|
2014-07-27 22:04:57 -04:00
|
|
|
- name: {{ name }}
|
|
|
|
- encoding: {{ salt['pillar.get']('postgres:databases:'+ name +':encoding', 'UTF8') }}
|
|
|
|
- lc_ctype: {{ salt['pillar.get']('postgres:databases:'+ name +':lc_ctype', 'en_US.UTF8') }}
|
|
|
|
- lc_collate: {{ salt['pillar.get']('postgres:databases:'+ name +':lc_collate', 'en_US.UTF8') }}
|
|
|
|
- template: {{ salt['pillar.get']('postgres:databases:'+ name +':template', 'template0') }}
|
|
|
|
{% if salt['pillar.get']('postgres:databases:'+ name +':owner') %}
|
|
|
|
- owner: {{ salt['pillar.get']('postgres:databases:'+ name +':owner') }}
|
|
|
|
{% endif %}
|
|
|
|
- runas: {{ salt['pillar.get']('postgres:databases:'+ name +':runas', 'postgres') }}
|
|
|
|
{% if salt['pillar.get']('postgres:databases:'+ name +':user') %}
|
2014-05-15 15:06:04 -07:00
|
|
|
- require:
|
2014-07-27 22:04:57 -04:00
|
|
|
- postgres_user: postgres-user-{{ salt['pillar.get']('postgres:databases:'+ name +':user') }}
|
|
|
|
{% endif %}
|
|
|
|
{% endfor%}
|
2014-05-16 10:59:19 -06:00
|
|
|
{% endif %}
|