From 1065e1c67c6757611220846ecaca61d9caae2093 Mon Sep 17 00:00:00 2001 From: Noel McLoughin Date: Mon, 22 Jan 2018 14:06:03 +0000 Subject: [PATCH 1/3] 'env' should be [] not {} in defaults.yml --- postgres/defaults.yaml | 2 +- postgres/server/init.sls | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 50f9acc..2fd1622 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -16,7 +16,7 @@ postgres: command: initdb --pgdata=/var/lib/pgsql/data test: test -f /var/lib/pgsql/data/PG_VERSION user: postgres - env: {} + env: [] conf_dir: /var/lib/pgsql/data postgresconf: "" diff --git a/postgres/server/init.sls b/postgres/server/init.sls index 5610e65..d0d60a3 100644 --- a/postgres/server/init.sls +++ b/postgres/server/init.sls @@ -56,7 +56,7 @@ postgresql-cluster-prepared: - name: {{ postgres.prepare_cluster.command }} - cwd: / - runas: {{ postgres.prepare_cluster.user }} - - env: {{ postgres.prepare_cluster.env|default({}) }} + - env: {{ postgres.prepare_cluster.env }} - unless: - {{ postgres.prepare_cluster.test }} - require: From e62d1373514f3c044bb7bc3a1ac929bd3e32ad1e Mon Sep 17 00:00:00 2001 From: Denys Havrysh Date: Thu, 22 Feb 2018 17:54:52 +0200 Subject: [PATCH 2/3] Do not fail states during mock test mode --- postgres/macros.jinja | 2 ++ postgres/manage.sls | 16 +++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/postgres/macros.jinja b/postgres/macros.jinja index 3732df6..4eedddb 100644 --- a/postgres/macros.jinja +++ b/postgres/macros.jinja @@ -23,6 +23,8 @@ {{ state }}-{{ name }}: {{ state }}.{{ ensure|default('present') }}: {{- format_kwargs(kwarg) }} + - onchanges: + - test: postgres-reload-modules {%- endmacro %} diff --git a/postgres/manage.sls b/postgres/manage.sls index ab8c703..20a7309 100644 --- a/postgres/manage.sls +++ b/postgres/manage.sls @@ -18,7 +18,7 @@ include: # Ensure that Salt is able to use postgres modules postgres-reload-modules: - test.nop: + test.succeed_with_changes: - reload_modules: True # User states @@ -26,8 +26,6 @@ postgres-reload-modules: {%- for name, user in postgres.users|dictsort() %} {{ format_state(name, 'postgres_user', user) }} - - require: - - test: postgres-reload-modules {%- endfor %} @@ -36,9 +34,8 @@ postgres-reload-modules: {%- for name, tblspace in postgres.tablespaces|dictsort() %} {{ format_state(name, 'postgres_tablespace', tblspace) }} - - require: - - test: postgres-reload-modules {%- if 'owner' in tblspace %} + - require: - postgres_user: postgres_user-{{ tblspace.owner }} {%- endif %} @@ -49,8 +46,9 @@ postgres-reload-modules: {%- for name, db in postgres.databases|dictsort() %} {{ format_state(name, 'postgres_database', db) }} + {%- if 'owner' in db or 'tablespace' in db %} - require: - - test: postgres-reload-modules + {%- endif %} {%- if 'owner' in db %} - postgres_user: postgres_user-{{ db.owner }} {%- endif %} @@ -65,9 +63,8 @@ postgres-reload-modules: {%- for name, schema in postgres.schemas|dictsort() %} {{ format_state(name, 'postgres_schema', schema) }} - - require: - - test: postgres-reload-modules {%- if 'owner' in schema %} + - require: - postgres_user: postgres_user-{{ schema.owner }} {%- endif %} @@ -78,8 +75,9 @@ postgres-reload-modules: {%- for name, extension in postgres.extensions|dictsort() %} {{ format_state(name, 'postgres_extension', extension) }} + {%- if 'maintenance_db' in extension or 'schema' in extension %} - require: - - test: postgres-reload-modules + {%- endif %} {%- if 'maintenance_db' in extension %} - postgres_database: postgres_database-{{ extension.maintenance_db }} {%- endif %} From 22b11fd680b1b7d79a167eb65d8a6aaadc695c93 Mon Sep 17 00:00:00 2001 From: Noel McLoughin Date: Sun, 14 Jan 2018 16:05:12 +0000 Subject: [PATCH 3/3] Support for upstream postgresql.org zypp repo after PR review --- pillar.example | 22 ++++++++++------------ postgres/osmap.yaml | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/pillar.example b/pillar.example index 37029ce..871fea8 100644 --- a/pillar.example +++ b/pillar.example @@ -1,19 +1,20 @@ postgres: - # Set True to configure upstream postgresql.org repository for YUM or APT + # UPSTREAM REPO + # Set True to configure upstream postgresql.org repository for YUM/APT/ZYPP use_upstream_repo: False - # Version to install from upstream repository - version: '9.3' + # Version to install from upstream repository (if upstream_repo: True) + version: '9.6' - # These are Debian/Ubuntu specific package names - pkg: 'postgresql-9.3' - pkg_client: 'postgresql-client-9.3' - - # Additional packages to install with PostgreSQL server, - # this should be in a list format + # PACKAGE + # These pillars are typically never required. + # pkg: 'postgresql' + # pkg_client: 'postgresql-client' + # service: postgresql pkgs_extra: - postgresql-contrib - postgresql-plpython + # POSTGRES # Append the lines under this item to your postgresql.conf file. # Pay attention to indent exactly with 4 spaces for all lines. postgresconf: | @@ -48,9 +49,6 @@ postgres: config_backup: ".backup@{{ salt['status.time']('%y-%m-%d_%H:%M:%S') }}" {%- endif %} - # PostgreSQL service name - service: postgresql - {%- if grains['init'] == 'unknown' %} # If Salt is unable to detect init system running in the scope of state run, diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index bf72717..9a2d17c 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -91,9 +91,43 @@ RedHat: {% endif %} Suse: + pkg_repo: + name: pgdg-sles-{{ release }} + humanname: PostgreSQL {{ repo.version }} $releasever - $basearch + #Using sles-12 upstream repo for opensuse + baseurl: 'https://download.postgresql.org/pub/repos/zypp/{{ repo.version }}/suse/sles-12-$basearch' + key_url: 'https://download.postgresql.org/pub/repos/zypp/{{ repo.version }}/suse/sles-12-$basearch/repodata/repomd.xml.key' + gpgcheck: 1 + gpgautoimport: True + +{% if repo.use_upstream_repo %} + {# Pillars needed are 'use_upstream_repo: True' and 'version: n.n'. #} + {# Avoid setting package names as pillars, as may corrupt postgres. #} + {% set lib_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %} + + pkg: postgresql{{ release }}-server + pkg_client: postgresql{{ release }} + conf_dir: {{ lib_dir }} + service: postgresql-{{ repo.version }} + + #This is postgresql-libs in defaults.yml but upstream is libpqxx + pkg_libpq_dev: libpqxx + pkg_dev: postgresql{{ release }}-devel + pkg_libs: postgresql{{ release }}-libs + + prepare_cluster: + #Full path needed as initdb is NOT 'cross version compatible' binary + command: /usr/pgsql-{{ repo.version }}/bin/initdb --pgdata='{{ lib_dir }}' + test: test -f '{{ lib_dir }}/PG_VERSION' + +{% else %} + pkg: postgresql-server pkg_client: postgresql - pkg_libpq_dev: postgresql + pkg_libpq_dev: libqpxx + pkg_libs: postgresql-libs + +{% endif %} MacOS: service: postgresql @@ -109,5 +143,4 @@ MacOS: user: _postgres group: _postgres - # vim: ft=sls