diff --git a/README.rst b/README.rst index 01ccb04..f28a0b1 100644 --- a/README.rst +++ b/README.rst @@ -77,7 +77,8 @@ The state relies on the ``postgres:use_upstream_repo`` Pillar value which could * ``True`` (default): adds the upstream repository to install packages from * ``False``: makes sure that the repository configuration is absent -* ``postgresapp`` (MacOS) uses upstream PostgresApp package repository. +* ``'postgresapp'`` (MacOS) uses upstream PostgresApp package repository. +* ``'homebrew'`` (MacOS) uses Homebrew postgres The ``postgres:version`` Pillar controls which version of the PostgreSQL packages should be installed from the upstream Linux repository. Defaults to ``9.5``. diff --git a/pillar.example b/pillar.example index 338c017..38f16e8 100644 --- a/pillar.example +++ b/pillar.example @@ -6,8 +6,9 @@ postgres: version: '9.6' ### MACOS - # Set to 'postgresapp' to install that upstream MacOS package + # Set to 'postgresapp' OR 'homebrew' for MacOS #use_upstream_repo: 'postgresapp' + #use_upstream_repo: 'homebrew' # PACKAGE # These pillars are typically never required. diff --git a/postgres/client.sls b/postgres/client.sls index a8729d1..473f3c6 100644 --- a/postgres/client.sls +++ b/postgres/client.sls @@ -7,7 +7,7 @@ {%- endif %} {%- endfor %} -{%- if postgres.use_upstream_repo %} +{%- if postgres.use_upstream_repo == true %} include: - postgres.upstream {%- endif %} @@ -16,7 +16,7 @@ include: postgresql-client-libs: pkg.installed: - pkgs: {{ pkgs }} -{%- if postgres.use_upstream_repo %} +{%- if postgres.use_upstream_repo == true %} - refresh: True - require: - pkgrepo: postgresql-repo diff --git a/postgres/codenamemap.yaml b/postgres/codenamemap.yaml index 909ccde..f5ea154 100644 --- a/postgres/codenamemap.yaml +++ b/postgres/codenamemap.yaml @@ -16,7 +16,7 @@ #} {# use upstream version if configured #} - {% if repo.use_upstream_repo %} + {% if repo.use_upstream_repo == true %} {% set version = repo.version %} {% endif %} @@ -49,7 +49,7 @@ #} {# use upstream version if configured #} - {% if repo.use_upstream_repo %} + {% if repo.use_upstream_repo == true %} {% set version = repo.version %} {% endif %} diff --git a/postgres/dev.sls b/postgres/dev.sls index 3e3d1f1..c9f330b 100644 --- a/postgres/dev.sls +++ b/postgres/dev.sls @@ -29,20 +29,17 @@ postgres_maxfiles_limits_conf: - context: soft_limit: {{ postgres.limits.soft or postgres.limits.hard }} hard_limit: {{ postgres.limits.hard or postgres.limits.soft }} - - group: wheel + - group: {{ postgres.group }} {% endif %} - # MacOS Shortcut for system user - {% if postgres.systemuser|lower not in (None, '',) %} - + {% if postgres.use_upstream_repo == 'postgresapp' %} + # Shortcut for PostgresApp postgres-desktop-shortcut-clean: file.absent: - - name: '{{ postgres.userhomes }}/{{ postgres.systemuser }}/Desktop/postgres' + - name: '{{ postgres.userhomes }}/{{ postgres.user }}/Desktop/Postgres ({{ postgres.use_upstream_repo }})' - require_in: - file: postgres-desktop-shortcut-add - {% endif %} - postgres-desktop-shortcut-add: file.managed: - name: /tmp/mac_shortcut.sh @@ -50,12 +47,13 @@ postgres-desktop-shortcut-add: - mode: 755 - template: jinja - context: - user: {{ postgres.systemuser }} + user: {{ postgres.user }} homes: {{ postgres.userhomes }} cmd.run: - - name: /tmp/mac_shortcut.sh {{ postgres.use_upstream_repo }} - - runas: {{ postgres.systemuser }} + - name: '/tmp/mac_shortcut.sh "Postgres ({{ postgres.use_upstream_repo }})"' + - runas: {{ postgres.user }} - require: - file: postgres-desktop-shortcut-add + {% endif %} {% endif %} diff --git a/postgres/macos/init.sls b/postgres/macos/init.sls index 7ebb4ef..ed332ad 100644 --- a/postgres/macos/init.sls +++ b/postgres/macos/init.sls @@ -3,7 +3,7 @@ include: {% if postgres.use_upstream_repo == 'postgresapp' %} - postgres.macos.postgresapp -{% else %} +{% elif postgres.use_upstream_repo == 'homebrew' %} - postgres.server - postgres.client {% endif %} diff --git a/postgres/macos/postgresapp.sls b/postgres/macos/postgresapp.sls index 6f5bd4c..cb4cd4f 100644 --- a/postgres/macos/postgresapp.sls +++ b/postgres/macos/postgresapp.sls @@ -27,9 +27,7 @@ pg-download-archive: interval: {{ pg.macos.dl.interval }} {% endif %} -{%- if pg.macos.postgresapp.sum %} - #Check hashstring for archive downloads - {%- if grains['saltversioninfo'] <= [2016, 11, 6] %} + {%- if pg.macos.postgresapp.sum %} pg-check-archive-hash: module.run: - name: file.check_hash @@ -40,7 +38,6 @@ pg-check-archive-hash: - require_in: - archive: pg-package-install {%- endif %} -{%- endif %} pg-package-install: macpackage.installed: @@ -56,7 +53,7 @@ pg-package-install: - file: pg-package-install - file: pg-remove-archive file.append: - - name: {{ pg.userhomes }}/{{ pg.systemuser }}/.bash_profile + - name: {{ pg.userhomes }}/{{ pg.user }}/.bash_profile - text: 'export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin' pg-remove-archive: diff --git a/postgres/osmap.yaml b/postgres/osmap.yaml index 2e1abe8..71c6344 100644 --- a/postgres/osmap.yaml +++ b/postgres/osmap.yaml @@ -33,7 +33,7 @@ RedHat: gpgcheck: 1 gpgkey: 'https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG-{{ release }}' -{% if repo.use_upstream_repo %} +{% if repo.use_upstream_repo == true %} {% set data_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %} @@ -104,7 +104,7 @@ Suse: gpgcheck: 1 gpgautoimport: True -{% if repo.use_upstream_repo %} +{% if repo.use_upstream_repo == true %} {# Pillars needed are 'use_upstream_repo: True' and 'version: n.n'. #} {# Avoid setting package names as pillars, as may corrupt postgres. #} {% set lib_dir = '/var/lib/pgsql/' ~ repo.version ~ '/data' %} @@ -133,13 +133,14 @@ Suse: {% endif %} +{%- if grains.os == 'MacOS' %} +## jinja check avoids rendering noise/failure on Linux MacOS: - {# todo: homebrew postgresql #} - {% if repo.use_upstream_repo == 'homebrew' %} + {%- if repo.use_upstream_repo == 'homebrew' %} service: homebrew.mxcl.postgresql - {% elif repo.use_upstream_repo == 'postgresapp' %} + {%- elif repo.use_upstream_repo == 'postgresapp' %} service: com.postgresapp.Postgres2 - {% endif %} + {%- endif %} pkg: postgresql pkg_client: pkg_libpq_dev: @@ -152,5 +153,6 @@ MacOS: test: test -f /Users/{{ repo.user }}/Library/AppSupport/postgres_{{ repo.use_upstream_repo }}/PG_VERSION user: {{ repo.user }} group: {{ repo.group }} +{%- endif %} # vim: ft=sls diff --git a/postgres/server/init.sls b/postgres/server/init.sls index fe71435..3c26f36 100644 --- a/postgres/server/init.sls +++ b/postgres/server/init.sls @@ -4,7 +4,7 @@ {%- if postgres.bake_image %} {%- do includes.append('postgres.server.image') %} {%- endif %} -{%- if postgres.use_upstream_repo -%} +{%- if postgres.use_upstream_repo == true -%} {%- do includes.append('postgres.upstream') %} {%- endif %} @@ -18,16 +18,27 @@ include: postgresql-server: pkg.installed: - pkgs: {{ pkgs }} -{%- if postgres.use_upstream_repo %} +{%- if postgres.use_upstream_repo == true %} - refresh: True - require: - pkgrepo: postgresql-repo {%- endif %} + {%- if grains.os == 'MacOS' %} + #Register as Launchd LaunchAgent for system users + - require_in: + - file: postgresql-server + file.managed: + - name: /Library/LaunchAgents/{{ postgres.service }}.plist + - source: /usr/local/opt/postgres/{{ postgres.service }}.plist + - group: wheel + - require_in: + - service: postgresql-running + {%- else %} # Alternatives system. Make server binaries available in $PATH -{%- if 'bin_dir' in postgres and postgres.linux.altpriority %} - {%- for bin in postgres.server_bins %} - {%- set path = salt['file.join'](postgres.bin_dir, bin) %} + {%- if 'bin_dir' in postgres and postgres.linux.altpriority %} + {%- for bin in postgres.server_bins %} + {%- set path = salt['file.join'](postgres.bin_dir, bin) %} {{ bin }}: alternatives.install: @@ -40,7 +51,9 @@ postgresql-server: - require_in: - cmd: postgresql-cluster-prepared - {%- endfor %} + {%- endfor %} + {%- endif %} + {%- endif %} postgresql-cluster-prepared: @@ -59,6 +72,12 @@ postgresql-config-dir: - name: {{ postgres.conf_dir }} - user: {{ postgres.user }} - group: {{ postgres.group }} + - dir_mode: 775 + - force: True + - file_mode: 644 + - recurse: + - user + - group - makedirs: True - require: - cmd: postgresql-cluster-prepared @@ -134,7 +153,9 @@ postgresql-running: service.running: - name: {{ postgres.service }} - enable: True + {% if grains.os not in ('MacOS',) %} - reload: True + {% endif %} - watch: - file: postgresql-pg_hba diff --git a/postgres/templates/limit.maxfiles.plist b/postgres/templates/limit.maxfiles.plist index 84a6437..1b16b1b 100644 --- a/postgres/templates/limit.maxfiles.plist +++ b/postgres/templates/limit.maxfiles.plist @@ -7,7 +7,7 @@ limit.maxfiles ProgramArguments - launchctl + /bin/launchctl limit maxfiles {{ soft_limit }} diff --git a/postgres/templates/mac_shortcut.sh b/postgres/templates/mac_shortcut.sh index a156e24..4f560bf 100755 --- a/postgres/templates/mac_shortcut.sh +++ b/postgres/templates/mac_shortcut.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -vendor=$1 +shortcutName='${1}' app="postgres.app" Source="/Applications/$app" -Destination="{{ homes }}/{{ user }}/Desktop" +Destination="{{ homes }}/{{ user }}/Desktop/${shortcutName}" /usr/bin/osascript -e "tell application \"Finder\" to make alias file to POSIX file \"$Source\" at POSIX file \"$Destination\"" diff --git a/postgres/upstream.sls b/postgres/upstream.sls index 6c3956f..cf92872 100644 --- a/postgres/upstream.sls +++ b/postgres/upstream.sls @@ -3,7 +3,7 @@ {%- if 'pkg_repo' in postgres -%} - {%- if postgres.use_upstream_repo -%} + {%- if postgres.use_upstream_repo == true -%} # Add upstream repository for your distro postgresql-repo: @@ -25,9 +25,11 @@ postgresql-repo: {%- else -%} # 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 %}