diff --git a/postgres/client.sls b/postgres/client.sls index 95d06b8..bf11dec 100644 --- a/postgres/client.sls +++ b/postgres/client.sls @@ -1,21 +1,45 @@ -{% from "postgres/map.jinja" import postgres with context %} +{%- from "postgres/map.jinja" import postgres with context -%} + +{%- set pkgs = [] %} +{%- for pkg in (postgres.pkg_client, postgres.pkg_libpq_dev) %} + {%- if pkg %} + {%- do pkgs.append(pkg) %} + {%- endif %} +{%- endfor -%} + +{%- if postgres.use_upstream_repo %} -{% if postgres.use_upstream_repo %} include: - postgres.upstream -{% endif %} -install-postgresql-client: - pkg.installed: - - name: {{ postgres.pkg_client }} - - refresh: {{ postgres.use_upstream_repo }} -{% if postgres.use_upstream_repo %} - - require: - - pkgrepo: install-postgresql-repo {%- endif %} -{% if postgres.pkg_libpq_dev %} -install-postgres-libpq-dev: +postgresql-client-libs: pkg.installed: - - name: {{ postgres.pkg_libpq_dev }} -{% endif %} + - pkgs: {{ pkgs }} +{%- if postgres.use_upstream_repo %} + - refresh: True + - require: + - pkgrepo: postgresql-repo +{%- endif %} + +{%- if 'bin_dir' in postgres %} + +# Make client binaries available in $PATH + + {%- for bin in postgres.client_bins %} + + {%- set path = salt['file.join'](postgres.bin_dir, bin) %} + +{{ bin }}: + alternatives.install: + - link: {{ salt['file.join']('/usr/bin', bin) }} + - path: {{ path }} + - priority: 30 + - onlyif: test -f {{ path }} + - require: + - pkg: postgresql-client-libs + + {%- endfor %} + +{%- endif %} diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 9172a9b..805fed5 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -39,3 +39,30 @@ postgres: command: service postgresql initdb test: test -f /var/lib/pgsql/data/PG_VERSION env: {} + + # Client executables list + client_bins: + - clusterdb + - createdb + - createlang + - createuser + - dropdb + - droplang + - dropuser + - pg_archivecleanup + - pg_basebackup + - pg_config + - pg_dump + - pg_dumpall + - pg_isready + - pg_receivexlog + - pg_restore + - pg_rewind + - pg_test_fsync + - pg_test_timing + - pg_upgrade + - pg_xlogdump + - pgbench + - psql + - reindexdb + - vacuumdb diff --git a/postgres/init.sls b/postgres/init.sls index bce0647..548b979 100644 --- a/postgres/init.sls +++ b/postgres/init.sls @@ -12,13 +12,13 @@ include: ### Installation states -postgresql-installed: +postgresql-server: pkg.installed: - name: {{ postgres.pkg }} - - refresh: {{ postgres.use_upstream_repo }} -{% if postgres.use_upstream_repo %} +{%- if postgres.use_upstream_repo %} + - refresh: True - require: - - pkgrepo: install-postgresql-repo + - pkgrepo: postgresql-repo {%- endif %} # make sure the data directory and contents have been initialized @@ -31,7 +31,7 @@ postgresql-cluster-prepared: - unless: - {{ postgres.prepare_cluster.test }} - require: - - pkg: postgresql-installed + - pkg: postgresql-server postgresql-config-dir: file.directory: diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index 23a1085..7864a00 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -39,6 +39,7 @@ RedHat: pkg: postgresql{{ release }}-server pkg_client: postgresql{{ release }} + bin_dir: /usr/pgsql-{{ repo.version }}/bin conf_dir: /var/lib/pgsql/{{ repo.version }}/data service: postgresql-{{ repo.version }} diff --git a/postgres/upstream.sls b/postgres/upstream.sls index 1d5c886..6c3956f 100644 --- a/postgres/upstream.sls +++ b/postgres/upstream.sls @@ -6,14 +6,14 @@ {%- if postgres.use_upstream_repo -%} # Add upstream repository for your distro -install-postgresql-repo: +postgresql-repo: pkgrepo.managed: {{- format_kwargs(postgres.pkg_repo) }} {%- else -%} # Remove the repo configuration (and GnuPG key) as requested -remove-postgresql-repo: +postgresql-repo: pkgrepo.absent: - name: {{ postgres.pkg_repo.name }} {%- if 'pkg_repo_keyid' in postgres %} @@ -25,7 +25,7 @@ remove-postgresql-repo: {%- else -%} # Notify that we don't manage this distro -install-postgresql-repo: +postgresql-repo: test.show_notification: - text: | PostgreSQL does not provide package repository for {{ grains['osfinger'] }}