diff --git a/postgres/codenamemap.yaml b/postgres/codenamemap.yaml index 0b8df62..2e488f3 100644 --- a/postgres/codenamemap.yaml +++ b/postgres/codenamemap.yaml @@ -10,25 +10,26 @@ {% macro debian_codename(name, version, codename=none) %} - {# use upstream version if configured #} {% if repo.use_upstream_repo == true %} {% set version = repo.version %} {% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %} {% else %} {% set fromrepo = name %} {% endif %} + {% set conf_dir = '/etc/postgresql/' ~ version ~ '/main' %} + {% set data_dir = '/var/lib/postgresql/' ~ version ~ '/main' %} {{ codename|default(name, true) }}: # PostgreSQL packages are mostly downloaded from `main` repo component + conf_dir: {{ conf_dir }} + data_dir: {{ data_dir }} fromrepo: {{ fromrepo }} pkg_repo: name: 'deb http://apt.postgresql.org/pub/repos/apt/ {{ name }}-pgdg main' pkg: postgresql-{{ version }} pkg_client: postgresql-client-{{ version }} - conf_dir: /etc/postgresql/{{ version }}/main prepare_cluster: - command: pg_createcluster {{ version }} main - test: test -f /var/lib/postgresql/{{ version }}/main/PG_VERSION && test -f /etc/postgresql/{{ version }}/main/postgresql.conf + pgcommand: pg_createcluster {{ version }} main -d user: root {% endmacro %} @@ -38,15 +39,11 @@ {# use upstream version if configured #} {% if repo.use_upstream_repo == true %} - {% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %} {% set version = repo.version %} - {% else %} - {% set fromrepo = name %} {% endif %} {{ codename|default(name, true) }}: # PostgreSQL packages are mostly downloaded from `main` repo component - fromrepo: {{ fromrepo }} pkg_repo: baseurl: 'https://download.postgresql.org/pub/repos/yum/{{ version }}/fedora/fedora-$releasever-$basearch' diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 3814265..507d553 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -16,12 +16,13 @@ postgres: group: postgres prepare_cluster: - command: initdb --pgdata=/var/lib/pgsql/data - test: test -f /var/lib/pgsql/data/PG_VERSION + pgcommand: initdb -D + pgtestfile: PG_VERSION user: postgres env: [] conf_dir: /var/lib/pgsql/data + data_dir: /var/lib/pgsql/data conf_dir_mode: '0700' postgresconf: "" diff --git a/postgres/dropped.sls b/postgres/dropped.sls index ffac550..2297be6 100644 --- a/postgres/dropped.sls +++ b/postgres/dropped.sls @@ -27,4 +27,6 @@ postgresql-removed: postgres-dir-absent: file.absent: - - name: {{ postgres.conf_dir }} + - names: + - {{ postgres.conf_dir }} + - {{ postgres.data_dir }} diff --git a/postgres/osfamilymap.yaml b/postgres/osfamilymap.yaml index 6311925..066f8d7 100644 --- a/postgres/osfamilymap.yaml +++ b/postgres/osfamilymap.yaml @@ -4,9 +4,7 @@ Arch: conf_dir: /var/lib/postgres/data - prepare_cluster: - command: initdb -D /var/lib/postgres/data - test: test -f /var/lib/postgres/data/PG_VERSION + data_dir: /var/lib/postgres/data pkg_client: postgresql-libs pkg_dev: postgresql @@ -26,6 +24,8 @@ FreeBSD: user: pgsql OpenBSD: + conf_dir: /var/postgresql/data + data_dir: /var/postgresql/data user: _postgresql RedHat: @@ -44,13 +44,10 @@ RedHat: pkg_client: postgresql{{ release }} pkg_libs: postgresql{{ release }}-libs pkg_dev: postgresql{{ release }}-devel - conf_dir: /var/lib/pgsql/{{ repo.version }}/data + conf_dir: {{ data_dir }} + data_dir: {{ data_dir }} service: postgresql-{{ repo.version }} - prepare_cluster: - command: initdb --pgdata='{{ data_dir }}' - test: test -f '{{ data_dir }}/PG_VERSION' - # Alternatives system linux: altpriority: 30 @@ -118,20 +115,17 @@ Suse: gpgautoimport: True {% if repo.use_upstream_repo == true %} - {% set lib_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %} + {% set data_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %} fromrepo: pgdg-sles-{{ release }} pkg: postgresql{{ release }}-server pkg_client: postgresql{{ release }} pkg_dev: postgresql{{ release }}-devel pkg_libs: postgresql{{ release }}-libs - conf_dir: {{ lib_dir }} + conf_dir: {{ data_dir }} + data_dir: {{ data_dir }} service: postgresql-{{ repo.version }} - prepare_cluster: - command: /usr/pgsql-{{ repo.version }}/bin/initdb --pgdata='{{ lib_dir }}' - test: test -f '{{ lib_dir }}/PG_VERSION' - # Alternatives system linux: altpriority: 30 @@ -184,9 +178,8 @@ MacOS: user: {{ repo.user }} group: {{ repo.group }} conf_dir: /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }} + data_dir: /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }} prepare_cluster: - command: initdb -D /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }} - test: test -f /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }}/PG_VERSION user: {{ repo.user }} group: {{ repo.group }} {%- endif %} diff --git a/postgres/server/image.sls b/postgres/server/image.sls index 711347f..7d31f47 100644 --- a/postgres/server/image.sls +++ b/postgres/server/image.sls @@ -12,10 +12,10 @@ include: postgresql-start: cmd.run: - - name: pg_ctl -D {{ postgres.conf_dir }} -l logfile start + - name: pg_ctl -D {{ postgres.data_dir }} -l logfile start - runas: {{ postgres.user }} - unless: - - ps -p $(head -n 1 {{ postgres.conf_dir }}/postmaster.pid) 2>/dev/null + - ps -p $(head -n 1 {{ postgres.data_dir }}/postmaster.pid) 2>/dev/null - require: - file: postgresql-pg_hba diff --git a/postgres/server/init.sls b/postgres/server/init.sls index ddb736c..987391e 100644 --- a/postgres/server/init.sls +++ b/postgres/server/init.sls @@ -61,27 +61,43 @@ postgresql-{{ bin }}-altinstall: {%- endif %} postgresql-cluster-prepared: + file.directory: + - name: {{ postgres.conf_dir }} + - user: {{ postgres.user }} + - group: {{ postgres.group }} + - makedirs: True + - recurse: + - user + - group + - dir_mode: 755 cmd.run: + {%- if postgres.prepare_cluster.command is defined %} + {# support for depreciated 'prepare_cluster.command' pillar #} - name: {{ postgres.prepare_cluster.command }} + - unless: {{ postgres.prepare_cluster.test }} + {%- else %} + - name: {{ postgres.prepare_cluster.pgcommand }} {{ postgres.data_dir }} + - unless: test -f {{ postgres.data_dir }}/{{ postgres.prepare_cluster.pgtestfile }} + {%- endif %} - cwd: / - - runas: {{ postgres.prepare_cluster.user }} - env: {{ postgres.prepare_cluster.env }} - - unless: - - {{ postgres.prepare_cluster.test }} + - runas: {{ postgres.user }} - require: - pkg: postgresql-server + - file: postgresql-cluster-prepared postgresql-config-dir: file.directory: - - name: {{ postgres.conf_dir }} + - names: + - {{ postgres.data_dir }} + - {{ postgres.conf_dir }} - user: {{ postgres.user }} - group: {{ postgres.group }} - dir_mode: {{ postgres.conf_dir_mode }} - force: True - file_mode: 644 - recurse: - - user - - group + - mode - makedirs: True - require: - cmd: postgresql-cluster-prepared