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 %}