diff --git a/postgres/client.sls b/postgres/client/init.sls similarity index 76% rename from postgres/client.sls rename to postgres/client/init.sls index 473f3c6b..65448b0a 100644 --- a/postgres/client.sls +++ b/postgres/client/init.sls @@ -16,19 +16,23 @@ include: postgresql-client-libs: pkg.installed: - pkgs: {{ pkgs }} -{%- if postgres.use_upstream_repo == true %} + {%- if postgres.fromrepo %} + - fromrepo: {{ postgres.fromrepo }} + {%- endif %} + {%- if postgres.use_upstream_repo == true %} - refresh: True - require: - pkgrepo: postgresql-repo -{%- endif %} + {%- endif %} # Alternatives system. Make client binaries available in $PATH -{%- if 'bin_dir' in postgres and postgres.linux.altpriority %} + {%- if 'bin_dir' in postgres and postgres.linux.altpriority %} {%- for bin in postgres.client_bins %} {%- set path = salt['file.join'](postgres.bin_dir, bin) %} -{{ bin }}: +postgresql-{{ bin }}-altinstall: alternatives.install: + - name: {{ bin }} - link: {{ salt['file.join']('/usr/bin', bin) }} - path: {{ path }} - priority: {{ postgres.linux.altpriority }} @@ -37,4 +41,4 @@ postgresql-client-libs: - pkg: postgresql-client-libs {%- endfor %} -{%- endif %} + {%- endif %} diff --git a/postgres/client/remove.sls b/postgres/client/remove.sls new file mode 100644 index 00000000..d0619dbb --- /dev/null +++ b/postgres/client/remove.sls @@ -0,0 +1,30 @@ +{%- from "postgres/map.jinja" import postgres with context -%} + +# Remove Postgres client and dev packages +postgresql-client-dev-removed: + pkg.purged: + - pkgs: + {% if postgres.pkg_client %} + - {{ postgres.pkg_client }} + {% endif %} + {% if postgres.pkg_dev %} + - {{ postgres.pkg_dev }} + {% endif %} + {% if postgres.pkg_libpq_dev %} + - {{ postgres.pkg_libpq_dev }} + {% endif %} + {% if postgres.pkg_python %} + - {{ postgres.pkg_python }} + {% endif %} + {# these packages probably should go too #} + - postgresql-common + - postgresql-client-common + - libpostgresql-jdbc-java + {%- for version in ['', '92', '93', '94', '95', '96', '10',] %} + - postgresql{{ version }} + {%- endfor %} + +postgresql-etc-removed: + file.absent: + - names: + - /etc/postgresql diff --git a/postgres/codenamemap.yaml b/postgres/codenamemap.yaml index f5ea1544..b318e6ce 100644 --- a/postgres/codenamemap.yaml +++ b/postgres/codenamemap.yaml @@ -81,6 +81,9 @@ ## Fedora # `oscodename` grain has long distro name +{{ fedora_codename('Fedora-28', '10.3', 'Fedora 28 (Twenty Eight)') }} +{{ fedora_codename('Fedora-27', '9.6', 'Fedora 27 (Twenty Seven)') }} +{{ fedora_codename('Fedora-26', '9.6', 'Fedora 26 (Twenty Six)') }} {{ fedora_codename('Fedora-25', '9.5', 'Fedora 25 (Twenty Five)') }} {{ fedora_codename('Fedora-24', '9.5', 'Fedora 24 (Twenty Four)') }} {{ fedora_codename('Fedora-23', '9.4', 'Fedora 23 (Twenty Three)') }} diff --git a/postgres/dev.sls b/postgres/dev.sls index c9f330b4..3bbcc7bc 100644 --- a/postgres/dev.sls +++ b/postgres/dev.sls @@ -14,10 +14,7 @@ install-postgres-libpq-dev: - name: {{ postgres.pkg_libpq_dev }} {% endif %} -{% endif %} - - -{% if grains.os == 'MacOS' %} +{% elif grains.os == 'MacOS' %} # Darwin maxfiles limits {% if postgres.limits.soft or postgres.limits.hard %} diff --git a/postgres/dropped.sls b/postgres/dropped.sls index 8c88d7b9..3c78eb25 100644 --- a/postgres/dropped.sls +++ b/postgres/dropped.sls @@ -1,30 +1,2 @@ -{% from "postgres/map.jinja" import postgres with context %} - -postgresql-dead: - service.dead: - - name: {{ postgres.service }} - -postgresql-removed: - pkg.removed: - - pkgs: - {% if postgres.pkg %} - - {{ postgres.pkg }} - {% endif %} - {% if postgres.pkg_client %} - - {{ postgres.pkg_client }} - {% endif %} - {% if postgres.pkg_dev %} - - {{ postgres.pkg_dev }} - {% endif %} - {% if postgres.pkg_libpq_dev %} - - {{ postgres.pkg_libpq_dev }} - {% endif %} - {% if postgres.pkgs_extra %} - {% for pkg in postgres.pkgs_extra %} - - {{ pkg }} - {% endfor %} - {% endif %} - -postgres-dir-absent: - file.absent: - - name: {{ postgres.conf_dir }} +include: + - postgresql.server.remove diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index a13162f5..e060f87b 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -17,6 +17,7 @@ Debian: file: /etc/apt/sources.list.d/pgdg.list pkg_repo_keyid: ACCC4CF8 pkg_dev: postgresql-server-dev-all + pkg_libpq_dev: libpq-dev FreeBSD: user: pgsql @@ -52,6 +53,8 @@ RedHat: # directory containing PostgreSQL client executables bin_dir: /usr/pgsql-{{ repo.version }}/bin + dev_bins: + - ecg client_bins: - clusterdb - createdb @@ -66,17 +69,20 @@ RedHat: - pg_dump - pg_dumpall - pg_isready + - pg_receivewal - pg_receivexlog - pg_restore - pg_rewind - pg_test_fsync - pg_test_timing - pg_upgrade + - pg_waldump - pg_xlogdump - pgbench - psql - reindexdb - vacuumdb + server_bins: - initdb - pg_controldata @@ -122,20 +128,26 @@ Suse: # Alternatives system linux: altpriority: 30 - # directory containing PostgreSQL client executables bin_dir: /usr/pgsql-{{ repo.version }}/bin + dev_bins: + - ecg client_bins: - pg_archivecleanup - pg_config - pg_isready + - pg_receivewal - pg_receivexlog - pg_rewind - pg_test_fsync - pg_test_timing - pg_upgrade + - pg_waldump - pg_xlogdump - pgbench + - psql + - reindexdb + - vacuumdb server_bins: - initdb - pg_controldata diff --git a/postgres/server/init.sls b/postgres/server/init.sls index 6e2b23bb..aa9b7efb 100644 --- a/postgres/server/init.sls +++ b/postgres/server/init.sls @@ -14,15 +14,20 @@ include: {%- endif %} {%- set pkgs = [postgres.pkg] + postgres.pkgs_extra %} + # Install, configure and start PostgreSQL server + postgresql-server: pkg.installed: - pkgs: {{ pkgs }} -{%- if postgres.use_upstream_repo == true %} + {%- if postgres.fromrepo %} + - fromrepo: {{ postgres.fromrepo }} + {%- endif %} + {%- if postgres.use_upstream_repo == true %} - refresh: True - require: - pkgrepo: postgresql-repo -{%- endif %} + {%- endif %} {%- if grains.os == 'MacOS' %} #Register as Launchd LaunchAgent for system users - require_in: @@ -33,6 +38,7 @@ postgresql-server: - group: wheel - require_in: - service: postgresql-running + {%- else %} # Alternatives system. Make server binaries available in $PATH @@ -40,8 +46,9 @@ postgresql-server: {%- for bin in postgres.server_bins %} {%- set path = salt['file.join'](postgres.bin_dir, bin) %} -{{ bin }}: +postgresql-{{ bin }}-altinstall: alternatives.install: + - name: {{ bin }} - link: {{ salt['file.join']('/usr/bin', bin) }} - path: {{ path }} - priority: {{ postgres.linux.altpriority }} @@ -54,7 +61,7 @@ postgresql-server: {%- endfor %} {%- endif %} -{%- endif %} + {%- endif %} postgresql-cluster-prepared: cmd.run: diff --git a/postgres/server/remove.sls b/postgres/server/remove.sls new file mode 100644 index 00000000..ad711e0b --- /dev/null +++ b/postgres/server/remove.sls @@ -0,0 +1,96 @@ +{%- from "postgres/map.jinja" import postgres with context %} + +{%- if 'pkg_repo' in postgres -%} + {%- if postgres.use_upstream_repo -%} + {## Remove the repo ##} +postgresql-repo-removed: + pkgrepo.absent: + - name: {{ postgres.pkg_repo.name }} + {%- if 'pkg_repo_keyid' in postgres %} + - keyid: {{ postgres.pkg_repo_keyid }} + {%- endif %} + - require_in: + - pkg: postgresql-server-removed + {%- endif -%} +{%- endif -%} + +{%- if not postgres.bake_image %} +# Stop PostgreSQL service with OS init +postgresql-dead: + service.dead: + - name: {{ postgres.service }} + - enable: False +{%- endif %} + +# Remove PostgreSQL server packages +postgresql-server-removed: + pkg.purged: + - pkgs: + {% if postgres.pkg %} + - {{ postgres.pkg }} + {% endif %} + {% if postgres.pkg_client %} + - {{ postgres.pkg_client }} + {% endif %} + {% if postgres.pkg_dev %} + - {{ postgres.pkg_dev }} + {% endif %} + {% if postgres.pkg_libpq_dev %} + - {{ postgres.pkg_libpq_dev }} + {% endif %} + {% if postgres.pkgs_extra %} + {% for pkg in postgres.pkgs_extra %} + - {{ pkg }} + {% endfor %} + {% endif %} + {% if postgres.pkg_libs %} + - {{ postgres.pkg_libs }} + {% endif %} + {# sometimes postgres-init remains. Maybe systemd.service related? #} + - postgres-init + - postgres-contrib + {# postgres-common remains on Ubuntu #} + - postgresql-common + - postgresql-jdbc + {# upstream package repos #} + {%- for version in ['', '92', '93', '94', '95', '96', '10',] %} + - postgresql{{ version }}-server + - postgresql{{ version }}-server + - postgresql{{ version }} + - postgresql{{ version }}-libs + - postgresql{{ version }}-contrib + {%- endfor %} + +{%- if 'bin_dir' in postgres %} + {%- for bin in postgres.server_bins %} + {%- for version in ['9.2', '9.3', '9.4', '9.5', '9.6', '10',] %} + {%- set path = salt['file.join']('/usr/pgsql-{{ version }}/bin/', bin) %} + +postgresql{{ version }}-{{ bin }}-altremove: + alternatives.remove: + - name: postgresql-{{ bin }} + - path: {{ path }} + - require: + - pkg: postgresql-server-removed + - onlyif: test -f {{ path }} + + {%- endfor %} + {%- endfor %} +{%- endif %} + +postgresql-dataconf-removed: + file.absent: + - names: + - {{ postgres.conf_dir }} + - {{ postgres.data_dir }} + - /var/lib/postgresql + - /var/lib/pgsql + + {%- for name, tblspace in postgres.tablespaces|dictsort() %} +postgresql-tablespace-dir-{{ name }}-removed: + file.absent: + - name: {{ tblspace.directory }} + - require: + - file: postgresql-dataconf-removed + {% endfor %} + diff --git a/postgres/upstream.sls b/postgres/upstream.sls index cf928727..2fae1477 100644 --- a/postgres/upstream.sls +++ b/postgres/upstream.sls @@ -22,14 +22,11 @@ postgresql-repo: {%- endif -%} -{%- else -%} +{%- elif grains.os not in ('Windows', 'MacOS',) %} -# Notify that we don't manage this distro - {% if grains.os not in ('Windows', 'MacOS',) %} postgresql-repo: test.show_notification: - text: | PostgreSQL does not provide package repository for {{ grains['osfinger'] }} - {% endif %} {%- endif %}