mirror of
https://github.com/saltstack-formulas/postgres-formula.git
synced 2025-04-15 17:20:25 +00:00
Homebrew Postgres on MacOS
This commit is contained in:
parent
1e527c4b91
commit
a34a4c270c
12 changed files with 60 additions and 38 deletions
|
@ -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``.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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 %}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<string>limit.maxfiles</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>launchctl</string>
|
||||
<string>/bin/launchctl</string>
|
||||
<string>limit</string>
|
||||
<string>maxfiles</string>
|
||||
<string>{{ soft_limit }}</string>
|
||||
|
|
|
@ -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\""
|
||||
|
||||
|
|
|
@ -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 %}
|
||||
|
|
Loading…
Add table
Reference in a new issue