Skip to content

Commit e6b4bee

Browse files
Split conf/data directories, support
1 parent 81919a9 commit e6b4bee

File tree

6 files changed

+62
-24
lines changed

6 files changed

+62
-24
lines changed

postgres/codenamemap.yaml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
### Set parameters based on PostgreSQL version supplied with particular distro
22

33
{% import_yaml "postgres/repo.yaml" as repo %}
4+
{% import_yaml "postgres/defaults.yaml" as defaults %}
45

56
{# Generate lookup dictionary map for OS and derivative distributions
67
name: distro codename
@@ -14,21 +15,26 @@
1415
{% if repo.use_upstream_repo == true %}
1516
{% set version = repo.version %}
1617
{% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %}
18+
{% set conf_dir = '/etc/postgresql/' + version|string + '/main' %}
19+
{% set data_dir = '/var/lib/postgresql/' + version|string + '/main' %}
1720
{% else %}
1821
{% set fromrepo = name %}
22+
{% set conf_dir = defaults.conf_dir %}
23+
{% set data_dir = defaults.data_dir %}
1924
{% endif %}
2025

2126
{{ codename|default(name, true) }}:
2227
# PostgreSQL packages are mostly downloaded from `main` repo component
28+
conf_dir: {{ conf_dir }}
29+
data_dir: {{ data_dir }}
2330
fromrepo: {{ fromrepo }}
2431
pkg_repo:
2532
name: 'deb http://apt.postgresql.org/pub/repos/apt {{ name }}-pgdg main {{ version }}'
2633
pkg: postgresql-{{ version }}
2734
pkg_client: postgresql-client-{{ version }}
28-
conf_dir: /etc/postgresql/{{ version }}/main
2935
prepare_cluster:
30-
command: pg_createcluster {{ version }} main
31-
test: test -f /var/lib/postgresql/{{ version }}/main/PG_VERSION && test -f /etc/postgresql/{{ version }}/main/postgresql.conf
36+
pgcommand: pg_createcluster {{ version }} main -d
37+
pgtestfile: PG_VERSION
3238
user: root
3339

3440
{% endmacro %}
@@ -40,13 +46,19 @@
4046
{% if repo.use_upstream_repo == true %}
4147
{% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %}
4248
{% set version = repo.version %}
49+
{% set conf_dir = '/etc/postgresql/' + version|string + '/main' %}
50+
{% set data_dir = '/var/lib/postgresql/' + version|string + '/main' %}
4351
{% else %}
4452
{% set fromrepo = name %}
53+
{% set conf_dir = defaults.conf_dir %}
54+
{% set data_dir = defaults.data_dir %}
4555
{% endif %}
4656

4757
{{ codename|default(name, true) }}:
4858
# PostgreSQL packages are mostly downloaded from `main` repo component
49-
fromrepo: {{ name }}
59+
conf_dir: {{ conf_dir }}
60+
data_dir: {{ data_dir }}
61+
fromrepo: {{ fromrepo }}
5062
pkg_repo:
5163
baseurl: 'https://download.postgresql.org/pub/repos/yum/{{ version }}/fedora/fedora-$releasever-$basearch'
5264

postgres/defaults.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ postgres:
1515
group: postgres
1616

1717
prepare_cluster:
18-
command: initdb --pgdata=/var/lib/pgsql/data
19-
test: test -f /var/lib/pgsql/data/PG_VERSION
18+
pgcommand: initdb --pgdata=
19+
pgtestfile: PG_VERSION
2020
user: postgres
2121
env: []
2222

2323
conf_dir: /var/lib/pgsql/data
24+
data_dir: /var/lib/pgsql/data
2425
conf_dir_mode: '0700'
2526
postgresconf: ""
2627

postgres/dropped.sls

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ postgresql-removed:
2727
2828
postgres-dir-absent:
2929
file.absent:
30-
- name: {{ postgres.conf_dir }}
30+
- names:
31+
- {{ postgres.conf_dir }}
32+
- {{ postgres.data_dir }}

postgres/osfamilymap.yaml

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
Arch:
66
conf_dir: /var/lib/postgres/data
7+
data_dir: /var/lib/postgres/data
78
prepare_cluster:
8-
command: initdb -D /var/lib/postgres/data
9-
test: test -f /var/lib/postgres/data/PG_VERSION
9+
pgcommand: initdb -D
10+
pgtestfile: PG_VERSION
1011
pkg_client: postgresql-libs
1112
pkg_dev: postgresql
1213

@@ -26,6 +27,8 @@ FreeBSD:
2627
user: pgsql
2728

2829
OpenBSD:
30+
conf_dir: /var/postgresql/data
31+
data_dir: /var/postgresql/data
2932
user: _postgresql
3033

3134
RedHat:
@@ -44,12 +47,13 @@ RedHat:
4447
pkg_client: postgresql{{ release }}
4548
pkg_libs: postgresql{{ release }}-libs
4649
pkg_dev: postgresql{{ release }}-devel
47-
conf_dir: /var/lib/pgsql/{{ repo.version }}/data
50+
conf_dir: {{ data_dir }}
51+
data_dir: {{ data_dir }}
4852
service: postgresql-{{ repo.version }}
4953

5054
prepare_cluster:
51-
command: initdb --pgdata='{{ data_dir }}'
52-
test: test -f '{{ data_dir }}/PG_VERSION'
55+
pgcommand: initdb --pgdata=
56+
pgtestfile: PG_VERSION
5357

5458
# Alternatives system
5559
linux:
@@ -113,19 +117,20 @@ Suse:
113117
gpgautoimport: True
114118

115119
{% if repo.use_upstream_repo == true %}
116-
{% set lib_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %}
120+
{% set data_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %}
117121

118122
fromrepo: pgdg-sles-{{ release }}
119123
pkg: postgresql{{ release }}-server
120124
pkg_client: postgresql{{ release }}
121125
pkg_dev: postgresql{{ release }}-devel
122126
pkg_libs: postgresql{{ release }}-libs
123-
conf_dir: {{ lib_dir }}
127+
conf_dir: {{ data_dir }}
128+
data_dir: {{ data_dir }}
124129
service: postgresql-{{ repo.version }}
125130

126131
prepare_cluster:
127-
command: /usr/pgsql-{{ repo.version }}/bin/initdb --pgdata='{{ lib_dir }}'
128-
test: test -f '{{ lib_dir }}/PG_VERSION'
132+
pgcommand: initdb --pgdata=
133+
pgtestfile: PG_VERSION
129134

130135
# Alternatives system
131136
linux:

postgres/server/image.sls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ include:
1212
1313
postgresql-start:
1414
cmd.run:
15-
- name: pg_ctl -D {{ postgres.conf_dir }} -l logfile start
15+
- name: pg_ctl -D {{ postgres.data_dir }} -l logfile start
1616
- runas: {{ postgres.user }}
1717
- unless:
18-
- ps -p $(head -n 1 {{ postgres.conf_dir }}/postmaster.pid) 2>/dev/null
18+
- ps -p $(head -n 1 {{ postgres.data_dir }}/postmaster.pid) 2>/dev/null
1919
- require:
2020
- file: postgresql-pg_hba
2121

postgres/server/init.sls

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,45 @@ postgresql-{{ bin }}-altinstall:
6161
{%- endif %}
6262
6363
postgresql-cluster-prepared:
64+
file.directory:
65+
- names:
66+
- {{ postgres.data_dir }}
67+
- {{ postgres.conf_dir }}
68+
- user: {{ postgres.user }}
69+
- group: {{ postgres.group }}
70+
- makedirs: True
71+
- recurse:
72+
- user
73+
- group
74+
- dir_mode: 755
6475
cmd.run:
76+
{%- if postgres.prepare_cluster.command is defined %}
77+
{# support for depreciated 'prepare_cluster.command' pillar #}
6578
- name: {{ postgres.prepare_cluster.command }}
79+
- unless: {{ postgres.prepare_cluster.test }}
80+
{%- else %}
81+
- name: {{ postgres.prepare_cluster.pgcommand + ' ' }} {{ postgres.data_dir }}
82+
- unless: test -f {{ postgres.data_dir }}/{{ postgres.prepare_cluster.pgtestfile }}
83+
{%- endif %}
6684
- cwd: /
67-
- runas: {{ postgres.prepare_cluster.user }}
6885
- env: {{ postgres.prepare_cluster.env }}
69-
- unless:
70-
- {{ postgres.prepare_cluster.test }}
86+
- runas: {{ postgres.user }}
7187
- require:
7288
- pkg: postgresql-server
89+
- file: postgresql-cluster-prepared
7390
7491
postgresql-config-dir:
7592
file.directory:
76-
- name: {{ postgres.conf_dir }}
93+
- names:
94+
- {{ postgres.data_dir }}
95+
- {{ postgres.conf_dir }}
7796
- user: {{ postgres.user }}
7897
- group: {{ postgres.group }}
7998
- dir_mode: {{ postgres.conf_dir_mode }}
8099
- force: True
81100
- file_mode: 644
82101
- recurse:
83-
- user
84-
- group
102+
- mode
85103
- makedirs: True
86104
- require:
87105
- cmd: postgresql-cluster-prepared

0 commit comments

Comments
 (0)