Split conf/data directories, support

This commit is contained in:
N 2018-06-18 23:46:29 +01:00
parent 501b0b678a
commit 764863fc8e
6 changed files with 44 additions and 35 deletions

View file

@ -10,25 +10,26 @@
{% macro debian_codename(name, version, codename=none) %} {% macro debian_codename(name, version, codename=none) %}
{# use upstream version if configured #}
{% if repo.use_upstream_repo == true %} {% if repo.use_upstream_repo == true %}
{% set version = repo.version %} {% set version = repo.version %}
{% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %} {% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %}
{% else %} {% else %}
{% set fromrepo = name %} {% set fromrepo = name %}
{% endif %} {% endif %}
{% set conf_dir = '/etc/postgresql/' ~ version ~ '/main' %}
{% set data_dir = '/var/lib/postgresql/' ~ version ~ '/main' %}
{{ codename|default(name, true) }}: {{ codename|default(name, true) }}:
# PostgreSQL packages are mostly downloaded from `main` repo component # PostgreSQL packages are mostly downloaded from `main` repo component
conf_dir: {{ conf_dir }}
data_dir: {{ data_dir }}
fromrepo: {{ fromrepo }} fromrepo: {{ fromrepo }}
pkg_repo: pkg_repo:
name: 'deb http://apt.postgresql.org/pub/repos/apt/ {{ name }}-pgdg main' name: 'deb http://apt.postgresql.org/pub/repos/apt/ {{ name }}-pgdg main'
pkg: postgresql-{{ version }} pkg: postgresql-{{ version }}
pkg_client: postgresql-client-{{ version }} pkg_client: postgresql-client-{{ version }}
conf_dir: /etc/postgresql/{{ version }}/main
prepare_cluster: prepare_cluster:
command: pg_createcluster {{ version }} main pgcommand: pg_createcluster {{ version }} main -d
test: test -f /var/lib/postgresql/{{ version }}/main/PG_VERSION && test -f /etc/postgresql/{{ version }}/main/postgresql.conf
user: root user: root
{% endmacro %} {% endmacro %}
@ -38,15 +39,11 @@
{# use upstream version if configured #} {# use upstream version if configured #}
{% if repo.use_upstream_repo == true %} {% if repo.use_upstream_repo == true %}
{% set fromrepo = repo.fromrepo|default(name ~ '-pgdg', true) %}
{% set version = repo.version %} {% set version = repo.version %}
{% else %}
{% set fromrepo = name %}
{% endif %} {% endif %}
{{ codename|default(name, true) }}: {{ codename|default(name, true) }}:
# PostgreSQL packages are mostly downloaded from `main` repo component # PostgreSQL packages are mostly downloaded from `main` repo component
fromrepo: {{ fromrepo }}
pkg_repo: pkg_repo:
baseurl: 'https://download.postgresql.org/pub/repos/yum/{{ version }}/fedora/fedora-$releasever-$basearch' baseurl: 'https://download.postgresql.org/pub/repos/yum/{{ version }}/fedora/fedora-$releasever-$basearch'

View file

@ -16,12 +16,13 @@ postgres:
group: postgres group: postgres
prepare_cluster: prepare_cluster:
command: initdb --pgdata=/var/lib/pgsql/data pgcommand: initdb -D
test: test -f /var/lib/pgsql/data/PG_VERSION pgtestfile: PG_VERSION
user: postgres user: postgres
env: [] env: []
conf_dir: /var/lib/pgsql/data conf_dir: /var/lib/pgsql/data
data_dir: /var/lib/pgsql/data
conf_dir_mode: '0700' conf_dir_mode: '0700'
postgresconf: "" postgresconf: ""

View file

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

View file

@ -4,9 +4,7 @@
Arch: Arch:
conf_dir: /var/lib/postgres/data conf_dir: /var/lib/postgres/data
prepare_cluster: data_dir: /var/lib/postgres/data
command: initdb -D /var/lib/postgres/data
test: test -f /var/lib/postgres/data/PG_VERSION
pkg_client: postgresql-libs pkg_client: postgresql-libs
pkg_dev: postgresql pkg_dev: postgresql
@ -26,6 +24,8 @@ FreeBSD:
user: pgsql user: pgsql
OpenBSD: OpenBSD:
conf_dir: /var/postgresql/data
data_dir: /var/postgresql/data
user: _postgresql user: _postgresql
RedHat: RedHat:
@ -44,13 +44,10 @@ RedHat:
pkg_client: postgresql{{ release }} pkg_client: postgresql{{ release }}
pkg_libs: postgresql{{ release }}-libs pkg_libs: postgresql{{ release }}-libs
pkg_dev: postgresql{{ release }}-devel 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 }} service: postgresql-{{ repo.version }}
prepare_cluster:
command: initdb --pgdata='{{ data_dir }}'
test: test -f '{{ data_dir }}/PG_VERSION'
# Alternatives system # Alternatives system
linux: linux:
altpriority: 30 altpriority: 30
@ -118,20 +115,17 @@ Suse:
gpgautoimport: True gpgautoimport: True
{% if repo.use_upstream_repo == 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 }} fromrepo: pgdg-sles-{{ release }}
pkg: postgresql{{ release }}-server pkg: postgresql{{ release }}-server
pkg_client: postgresql{{ release }} pkg_client: postgresql{{ release }}
pkg_dev: postgresql{{ release }}-devel pkg_dev: postgresql{{ release }}-devel
pkg_libs: postgresql{{ release }}-libs pkg_libs: postgresql{{ release }}-libs
conf_dir: {{ lib_dir }} conf_dir: {{ data_dir }}
data_dir: {{ data_dir }}
service: postgresql-{{ repo.version }} 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 # Alternatives system
linux: linux:
altpriority: 30 altpriority: 30
@ -184,9 +178,8 @@ MacOS:
user: {{ repo.user }} user: {{ repo.user }}
group: {{ repo.group }} group: {{ repo.group }}
conf_dir: /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }} 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: 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 }} user: {{ repo.user }}
group: {{ repo.group }} group: {{ repo.group }}
{%- endif %} {%- endif %}

View file

@ -12,10 +12,10 @@ include:
postgresql-start: postgresql-start:
cmd.run: 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 }} - runas: {{ postgres.user }}
- unless: - 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: - require:
- file: postgresql-pg_hba - file: postgresql-pg_hba

View file

@ -61,27 +61,43 @@ postgresql-{{ bin }}-altinstall:
{%- endif %} {%- endif %}
postgresql-cluster-prepared: 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: cmd.run:
{%- if postgres.prepare_cluster.command is defined %}
{# support for depreciated 'prepare_cluster.command' pillar #}
- name: {{ postgres.prepare_cluster.command }} - 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: / - cwd: /
- runas: {{ postgres.prepare_cluster.user }}
- env: {{ postgres.prepare_cluster.env }} - env: {{ postgres.prepare_cluster.env }}
- unless: - runas: {{ postgres.user }}
- {{ postgres.prepare_cluster.test }}
- require: - require:
- pkg: postgresql-server - pkg: postgresql-server
- file: postgresql-cluster-prepared
postgresql-config-dir: postgresql-config-dir:
file.directory: file.directory:
- name: {{ postgres.conf_dir }} - names:
- {{ postgres.data_dir }}
- {{ postgres.conf_dir }}
- user: {{ postgres.user }} - user: {{ postgres.user }}
- group: {{ postgres.group }} - group: {{ postgres.group }}
- dir_mode: {{ postgres.conf_dir_mode }} - dir_mode: {{ postgres.conf_dir_mode }}
- force: True - force: True
- file_mode: 644 - file_mode: 644
- recurse: - recurse:
- user - mode
- group
- makedirs: True - makedirs: True
- require: - require:
- cmd: postgresql-cluster-prepared - cmd: postgresql-cluster-prepared