From 61acd4fd75044c2a36918edc9cc1929633231483 Mon Sep 17 00:00:00 2001 From: Tim Goodaire Date: Mon, 23 May 2016 14:51:17 -0400 Subject: [PATCH 1/5] Explicitly list the grain that we're filtering by (even though it's the default) --- postgres/map.jinja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres/map.jinja b/postgres/map.jinja index 415e344..c6032f0 100644 --- a/postgres/map.jinja +++ b/postgres/map.jinja @@ -3,7 +3,7 @@ {% import_yaml "postgres/codenamemap.yaml" as codemap %} {# get the settings for the os_family grain #} -{% set osfam = salt['grains.filter_by'](osmap) or {} %} +{% set osfam = salt['grains.filter_by'](osmap, grain='os_family') or {} %} {# get the settings for the oscodename grain, os_family data will override oscodename data #} {% set oscode = salt['grains.filter_by'](codemap, From 8a4eb569f4155d6d75e1ab9198992f5c6f65612c Mon Sep 17 00:00:00 2001 From: Tim Goodaire Date: Mon, 23 May 2016 12:19:32 -0500 Subject: [PATCH 2/5] - Added initdb_user configuration, renamed postgres_user and postgres_group to user and group - Corrected inadvertent changes to postgres_user - Fixed postgres_user - Explicitly list the grain that we're filtering by even though it's default - Place *BSD user and runas into osmap instead of hardcoding --- _modules/postgres_ext.py | 7 ------- postgres/defaults.yaml | 5 +++-- postgres/init.sls | 18 +++++++++--------- postgres/osmap.yaml | 8 ++++++-- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/_modules/postgres_ext.py b/_modules/postgres_ext.py index 3165487..6dfaba8 100644 --- a/_modules/postgres_ext.py +++ b/_modules/postgres_ext.py @@ -33,13 +33,6 @@ def _run_psql(cmd, runas=None, password=None, host=None, port=None, user=None): if runas is None: if not host: host = __salt__['config.option']('postgres.host') - if not host or host.startswith('/'): - if 'FreeBSD' in __grains__['os_family']: - runas = 'pgsql' - if 'OpenBSD' in __grains__['os_family']: - runas = '_postgresql' - else: - runas = 'postgres' if user is None: user = runas diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 25a32a2..d50f5a3 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -20,5 +20,6 @@ postgres: pg_hba.conf: salt://postgres/pg_hba.conf commands: initdb: service postgresql initdb - postgres_user: postgres - postgres_group: postgres + initdb_user: root + user: postgres + group: postgres diff --git a/postgres/init.sls b/postgres/init.sls index 4831ee1..4fd4e16 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -7,8 +7,8 @@ include: {{ postgres.conf_dir }}: file.directory: - - user: {{ postgres.postgres_user }} - - group: {{ postgres.postgres_group }} + - user: {{ postgres.user }} + - group: {{ postgres.group }} - makedirs: True install-postgresql: @@ -31,7 +31,7 @@ create-postgresql-cluster: postgresql-initdb: cmd.run: - cwd: / - - user: root + - user: {{ postgres.initdb_user }} - name: {{ postgres.commands.initdb }} - unless: test -f {{ postgres.conf_dir }}/postgresql.conf - env: @@ -73,8 +73,8 @@ pg_hba.conf: - name: {{ postgres.conf_dir }}/pg_hba.conf - source: {{ postgres['pg_hba.conf'] }} - template: jinja - - user: {{ postgres.postgres_user }} - - group: {{ postgres.postgres_group }} + - user: {{ postgres.user }} + - group: {{ postgres.group }} - mode: 644 - require: - pkg: install-postgresql @@ -93,14 +93,14 @@ postgres-user-{{ name }}: - inherit: {{ user.get('inherit', True) }} - replication: {{ user.get('replication', False) }} - password: {{ user.get('password', 'changethis') }} - - user: {{ user.get('runas', postgres.postgres_user) }} + - user: {{ user.get('runas', postgres.user) }} - superuser: {{ user.get('superuser', False) }} - require: - service: run-postgresql {% else %} postgres_user.absent: - name: {{ name }} - - user: {{ user.get('runas', postgres.postgres_user) }} + - user: {{ user.get('runas', postgres.user) }} - require: - service: run-postgresql {% endif %} @@ -117,7 +117,7 @@ postgres-db-{{ name }}: {% if db.get('owner') %} - owner: {{ db.get('owner') }} {% endif %} - - user: {{ db.get('runas', postgres.postgres_user) }} + - user: {{ db.get('runas', postgres.user) }} - require: - service: run-postgresql {% if db.get('user') %} @@ -143,7 +143,7 @@ postgres-schema-{{ schema }}-for-db-{{ name }}: postgres-ext-{{ ext }}-for-db-{{ name }}: postgres_extension.present: - name: {{ ext }} - - user: {{ db.get('runas', postgres.postgres_user) }} + - user: {{ db.get('runas', postgres.user) }} - maintenance_db: {{ name }} {% if ext_args is not none %} {% for arg, value in ext_args.items() %} diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index f6ed69b..15352c2 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -1,7 +1,7 @@ RedHat: init_db: True commands: - initdb: sudo -u postgres initdb /var/lib/pgsql/data + initdb: initdb /var/lib/pgsql/data pkg: postgresql-server pkg_client: postgresql pkg_repo: pgdg94 @@ -12,6 +12,10 @@ Debian: pkg_libpq_dev: libpq-dev Suse: commands: - initdb: sudo -u postgres initdb /var/lib/pgsql/data + initdb: initdb /var/lib/pgsql/data pkg: postgresql-server pkg_client: postgresql +FreeBSD: + user: pgsql +OpenBSD: + user: _postgresql From e4bb5bf13367eac8d85760e361719658f6a8d085 Mon Sep 17 00:00:00 2001 From: Tim Goodaire Date: Tue, 24 May 2016 11:02:30 -0400 Subject: [PATCH 3/5] Improvements to initdb stuff --- postgres/defaults.yaml | 2 ++ postgres/init.sls | 4 ++-- postgres/osmap.yaml | 7 +++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index d50f5a3..3c64ece 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -7,6 +7,7 @@ postgres: python: python-psycopg2 service: postgresql conf_dir: /var/lib/pgsql/data + runtime_dir: /var/lib/pgsql/data create_cluster: False init_db: False version: 9.1 @@ -21,5 +22,6 @@ postgres: commands: initdb: service postgresql initdb initdb_user: root + initdb_args: --data-checksum user: postgres group: postgres diff --git a/postgres/init.sls b/postgres/init.sls index 4fd4e16..97d99fa 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -32,8 +32,8 @@ postgresql-initdb: cmd.run: - cwd: / - user: {{ postgres.initdb_user }} - - name: {{ postgres.commands.initdb }} - - unless: test -f {{ postgres.conf_dir }}/postgresql.conf + - name: {{ postgres.commands.initdb }} {{ postgres.initdb_args }} -D {{ postgres.runtime_dir }} + - unless: test -f {{ postgres.runtime_dir }}/PG_VERSION - env: LC_ALL: C.UTF-8 {% endif %} diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index 15352c2..23abd64 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -1,7 +1,8 @@ RedHat: init_db: True commands: - initdb: initdb /var/lib/pgsql/data + initdb: initdb + initdb_user: postgres pkg: postgresql-server pkg_client: postgresql pkg_repo: pgdg94 @@ -11,8 +12,10 @@ Debian: pkg_repo_file: /etc/apt/sources.list.d/pgdg.list pkg_libpq_dev: libpq-dev Suse: + init_db: True commands: - initdb: initdb /var/lib/pgsql/data + initdb: initdb + initdb_user: postgres pkg: postgresql-server pkg_client: postgresql FreeBSD: From fac8b6b936e6a04c87e8e14113a80f3ab4b14bdc Mon Sep 17 00:00:00 2001 From: Tim Goodaire Date: Tue, 24 May 2016 11:40:14 -0400 Subject: [PATCH 4/5] Rename runtime_dir to data_dir --- postgres/defaults.yaml | 2 +- postgres/init.sls | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 3c64ece..703a38e 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -7,7 +7,7 @@ postgres: python: python-psycopg2 service: postgresql conf_dir: /var/lib/pgsql/data - runtime_dir: /var/lib/pgsql/data + data_dir: /var/lib/pgsql/data create_cluster: False init_db: False version: 9.1 diff --git a/postgres/init.sls b/postgres/init.sls index 97d99fa..b98441a 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -32,8 +32,8 @@ postgresql-initdb: cmd.run: - cwd: / - user: {{ postgres.initdb_user }} - - name: {{ postgres.commands.initdb }} {{ postgres.initdb_args }} -D {{ postgres.runtime_dir }} - - unless: test -f {{ postgres.runtime_dir }}/PG_VERSION + - name: {{ postgres.commands.initdb }} {{ postgres.initdb_args }} -D {{ postgres.data_dir }} + - unless: test -f {{ postgres.data_dir }}/PG_VERSION - env: LC_ALL: C.UTF-8 {% endif %} From 3ee730996bd8935c21df84fb0b3fc1e50417c7dd Mon Sep 17 00:00:00 2001 From: Tim Goodaire Date: Wed, 25 May 2016 12:12:48 -0400 Subject: [PATCH 5/5] Cleanup, including restructuring and renaming --- postgres/init.sls | 106 +++++++++++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 44 deletions(-) diff --git a/postgres/init.sls b/postgres/init.sls index b98441a..d6061cf 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -5,48 +5,53 @@ include: - postgres.upstream {% endif %} -{{ postgres.conf_dir }}: +postgresql-config-dir: file.directory: + - name: {{ postgres.conf_dir }} - user: {{ postgres.user }} - group: {{ postgres.group }} - makedirs: True +{% if postgres.conf_dir == postgres.data_dir %} + - require: + - cmd: postgresql-cluster-prepared +{% endif %} -install-postgresql: +postgresql-installed: pkg.installed: - name: {{ postgres.pkg }} - refresh: {{ postgres.use_upstream_repo }} +# make sure the data directory and contents have been initialized +postgresql-cluster-prepared: + cmd.run: + - cwd: / {% if postgres.create_cluster != False %} -create-postgresql-cluster: - cmd.run: - - cwd: / - user: root - - name: pg_createcluster {{ postgres.version }} main --start - - unless: test -f {{ postgres.conf_dir }}/postgresql.conf - - env: - LC_ALL: C.UTF-8 + - name: pg_createcluster {{ postgres.version }} main + - unless: + - test -f {{ postgres.conf_dir }}/environment {% endif %} - {% if postgres.init_db != False %} -postgresql-initdb: - cmd.run: - - cwd: / - user: {{ postgres.initdb_user }} - name: {{ postgres.commands.initdb }} {{ postgres.initdb_args }} -D {{ postgres.data_dir }} - - unless: test -f {{ postgres.data_dir }}/PG_VERSION + - unless: + - test -f {{ postgres.data_dir }}/PG_VERSION +{% endif %} + - require: + - pkg: postgresql-installed - env: LC_ALL: C.UTF-8 -{% endif %} -run-postgresql: +postgresql-running: service.running: - enable: true - name: {{ postgres.service }} + - reload: true - require: - - pkg: install-postgresql + - cmd: postgresql-cluster-prepared {% if postgres.pkgs_extra %} -install-postgres-extra: +postgresql-extra-pkgs-installed: pkg.installed: - pkgs: {{ postgres.pkgs_extra }} {% endif %} @@ -65,10 +70,12 @@ postgresql-conf: - backup: False {% endif -%} - watch_in: - - service: run-postgresql + - service: postgresql-running + - require: + - file: postgresql-config-dir {% endif %} -pg_hba.conf: +postgresql-pg_hba: file.managed: - name: {{ postgres.conf_dir }}/pg_hba.conf - source: {{ postgres['pg_hba.conf'] }} @@ -77,14 +84,17 @@ pg_hba.conf: - group: {{ postgres.group }} - mode: 644 - require: - - pkg: install-postgresql - - onlyif: test -f {{ postgres.conf_dir }}/postgresql.conf + - file: postgresql-config-dir - watch_in: - - service: run-postgresql + - service: postgresql-running {% for name, user in postgres.users.items() %} -postgres-user-{{ name }}: -{% if user.get('ensure', 'present') == 'present' %} +postgresql-user-{{ name }}: +{% if user.get('ensure', 'present') == 'absent' %} + postgres_user.absent: + - name: {{ name }} + - user: {{ user.get('runas', postgres.user) }} +{% else %} postgres_user.present: - name: {{ name }} - createdb: {{ user.get('createdb', False) }} @@ -95,19 +105,19 @@ postgres-user-{{ name }}: - password: {{ user.get('password', 'changethis') }} - user: {{ user.get('runas', postgres.user) }} - superuser: {{ user.get('superuser', False) }} - - require: - - service: run-postgresql -{% else %} - postgres_user.absent: - - name: {{ name }} - - user: {{ user.get('runas', postgres.user) }} - - require: - - service: run-postgresql {% endif %} -{% endfor%} + - require: + - service: postgresql-running +{% endfor %} {% for name, db in postgres.databases.items() %} -postgres-db-{{ name }}: +postgresql-db-{{ name }}: +{% if db.get('ensure', 'present') == 'absent' %} + postgres_database.absent: + - name: {{ name }} + - require: + - service: postgresql-running +{% else %} postgres_database.present: - name: {{ name }} - encoding: {{ db.get('encoding', 'UTF8') }} @@ -119,14 +129,14 @@ postgres-db-{{ name }}: {% endif %} - user: {{ db.get('runas', postgres.user) }} - require: - - service: run-postgresql + - service: postgresql-running {% if db.get('user') %} - - postgres_user: postgres-user-{{ db.get('user') }} + - postgres_user: postgresql-user-{{ db.get('user') }} {% endif %} {% if db.schemas is defined %} {% for schema, schema_args in db.schemas.items() %} -postgres-schema-{{ schema }}-for-db-{{ name }}: +postgresql-schema-{{ schema }}-for-db-{{ name }}: postgres_schema.present: - name: {{ schema }} - dbname: {{ name }} @@ -134,13 +144,15 @@ postgres-schema-{{ schema }}-for-db-{{ name }}: {% for arg, value in schema_args.items() %} - {{ arg }}: {{ value }} {% endfor %} + - require: + - service: postgresql-running {% endif %} {% endfor %} {% endif %} {% if db.extensions is defined %} {% for ext, ext_args in db.extensions.items() %} -postgres-ext-{{ ext }}-for-db-{{ name }}: +postgresql-ext-{{ ext }}-for-db-{{ name }}: postgres_extension.present: - name: {{ ext }} - user: {{ db.get('runas', postgres.user) }} @@ -149,13 +161,17 @@ postgres-ext-{{ ext }}-for-db-{{ name }}: {% for arg, value in ext_args.items() %} - {{ arg }}: {{ value }} {% endfor %} + - require: + - service: postgresql-running {% endif %} {% endfor %} {% endif %} -{% endfor%} +{% endif %} +{% endfor %} + {% for name, directory in postgres.tablespaces.items() %} -postgres-tablespace-dir-perms-{{ directory}}: +postgresql-tablespace-dir-perms-{{ directory}}: file.directory: - name: {{ directory }} - user: postgres @@ -165,10 +181,12 @@ postgres-tablespace-dir-perms-{{ directory}}: - user - group -postgres-tablespace-{{ name }}: +postgresql-tablespace-{{ name }}: postgres_tablespace.present: - name: {{ name }} - directory: {{ directory }} - require: - - service: run-postgresql -{% endfor%} + - service: postgresql-running + - file: postgresql-tablespace-dir-perms-{{ directory}} +{% endfor %} +