diff --git a/pillar.example b/pillar.example index 60ab061..108c38a 100644 --- a/pillar.example +++ b/pillar.example @@ -24,7 +24,10 @@ postgres: # These pillars are typically never required. # pkg: 'postgresql' # pkg_client: 'postgresql-client' - # service: postgresql + # service: + # name: 'postgresql' + # flags: -w -s -m fast + # sysrc: True pkgs_extra: - postgresql-contrib - postgresql-plpython diff --git a/postgres/defaults.yaml b/postgres/defaults.yaml index 4447708..c5ce3e0 100644 --- a/postgres/defaults.yaml +++ b/postgres/defaults.yaml @@ -67,7 +67,9 @@ postgres: config_backup: '.bak' - service: postgresql + service: + name: postgresql + sysrc: False bake_image: False diff --git a/postgres/osfamilymap.yaml b/postgres/osfamilymap.yaml index b2a90d4..c64a15f 100644 --- a/postgres/osfamilymap.yaml +++ b/postgres/osfamilymap.yaml @@ -30,11 +30,17 @@ FreeBSD: prepare_cluster: user: *freebsd-user group: *freebsd-group + service: + flags: -w -s -m fast + sysrc: True OpenBSD: conf_dir: /var/postgresql/data data_dir: /var/postgresql/data user: _postgresql + service: + flags: -w -s -m fast + sysrc: True RedHat: pkg_repo: @@ -54,7 +60,8 @@ RedHat: pkg_dev: postgresql{{ release }}-devel conf_dir: {{ data_dir }} data_dir: {{ data_dir }} - service: postgresql-{{ repo.version }} + service: + name: postgresql-{{ repo.version }} # Alternatives system linux: @@ -132,7 +139,8 @@ Suse: pkg_libs: postgresql{{ release }}-libs conf_dir: {{ data_dir }} data_dir: {{ data_dir }} - service: postgresql-{{ repo.version }} + service: + name: postgresql-{{ repo.version }} # Alternatives system linux: @@ -175,9 +183,11 @@ Suse: ## jinja check avoids rendering noise/failure on Linux MacOS: {%- if repo.use_upstream_repo == 'homebrew' %} - service: homebrew.mxcl.postgresql + service: + name: homebrew.mxcl.postgresql {%- elif repo.use_upstream_repo == 'postgresapp' %} - service: com.postgresapp.Postgres2 + service: + name: com.postgresapp.Postgres2 {%- endif %} pkg: postgresql pkg_client: diff --git a/postgres/server/image.sls b/postgres/server/image.sls index 7d31f47..67b2411 100644 --- a/postgres/server/image.sls +++ b/postgres/server/image.sls @@ -24,11 +24,11 @@ postgresql-start: postgresql-enable: cmd.run: {%- if salt['file.file_exists']('/bin/systemctl') %} - - name: systemctl enable {{ postgres.service }} + - name: systemctl enable {{ postgres.service.name }} {%- elif salt['cmd.which']('chkconfig') %} - - name: chkconfig {{ postgres.service }} on + - name: chkconfig {{ postgres.service.name }} on {%- elif salt['file.file_exists']('/usr/sbin/update-rc.d') %} - - name: update-rc.d {{ service }} defaults + - name: update-rc.d {{ postgres.service.name }} defaults {%- else %} # Nothing to do - name: 'true' diff --git a/postgres/server/init.sls b/postgres/server/init.sls index cb3cdc3..ce1d575 100644 --- a/postgres/server/init.sls +++ b/postgres/server/init.sls @@ -31,8 +31,8 @@ postgresql-server: - require_in: - file: postgresql-server file.managed: - - name: /Library/LaunchAgents/{{ postgres.service }}.plist - - source: /usr/local/opt/postgres/{{ postgres.service }}.plist + - name: /Library/LaunchAgents/{{ postgres.service.name }}.plist + - source: /usr/local/opt/postgres/{{ postgres.service.name }}.plist - group: wheel - require_in: - service: postgresql-running @@ -261,12 +261,23 @@ postgresql-tablespace-dir-{{ name }}-fcontext: {%- if not postgres.bake_image %} +# Workaround for FreeBSD minion undefinitely hanging on service start +# cf. https://github.com/saltstack/salt/issues/44848 +{% if postgres.service.sysrc %} +posgresql-rc-flags: + sysrc.managed: + - name: {{ postgres.service.name }}_flags + - value: "{{ postgres.service.flags }} > /dev/null 2>&1" + - watch_in: + - service: postgresql-running +{% endif %} + # Start PostgreSQL server using OS init # Note: This is also the target for numerous `watch_in` requisites above, used # for the necessary service restart after changing the relevant configuration files postgresql-running: service.running: - - name: {{ postgres.service }} + - name: {{ postgres.service.name }} - enable: True # Reload the service for changes made to `pg_ident.conf`, except for `MacOS` @@ -275,7 +286,7 @@ postgresql-running: postgresql-service-reload: module.wait: - name: service.reload - - m_name: {{ postgres.service }} + - m_name: {{ postgres.service.name }} - require: - service: postgresql-running {%- endif %} diff --git a/postgres/server/remove.sls b/postgres/server/remove.sls index c92eda2..cc28322 100644 --- a/postgres/server/remove.sls +++ b/postgres/server/remove.sls @@ -2,7 +2,7 @@ postgresql-dead: service.dead: - - name: {{ postgres.service }} + - name: {{ postgres.service.name }} - enable: False postgresql-repo-removed: @@ -81,7 +81,7 @@ postgresql{{ release }}-tablespace-dir-{{ name }}-removed: file.absent: - name: {{ tblspace.directory }} - require: - - file: postgresql{{ release }}-dataconf-removed + - file: postgresql{{ release }}-dataconf-removed {% endfor %} {% endif %}