Merge pull request #228 from noelmcloughlin/confdata1

Allow conf/data directory separation
This commit is contained in:
Niels Abspoel 2018-06-20 10:46:26 +02:00 committed by GitHub
commit 9865664963
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 44 additions and 35 deletions

View file

@ -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'

View file

@ -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: ""

View file

@ -27,4 +27,6 @@ postgresql-removed:
postgres-dir-absent:
file.absent:
- name: {{ postgres.conf_dir }}
- names:
- {{ postgres.conf_dir }}
- {{ postgres.data_dir }}

View file

@ -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 }}
# macos limits

View file

@ -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

View file

@ -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