cdist configuration management
Latest manual: https://www.cdi.st/manual/latest/
Home page: https://www.cdi.st
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
#!/bin/sh -e |
|
# -*- mode: sh; indent-tabs-mode: t -*- |
|
# |
|
# 2021 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) |
|
# |
|
# This file is part of cdist. |
|
# |
|
# cdist is free software: you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation, either version 3 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# cdist is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public License |
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>. |
|
# |
|
|
|
postgres_user=$("${__type_explorer:?}/postgres_user") |
|
|
|
conf_name=${__object_id:?} |
|
|
|
su - "${postgres_user}" -c 'psql postgres -c "SELECT 1"' >/dev/null || { |
|
echo 'Connection to PostgreSQL server failed' >&2 |
|
exit 1 |
|
} |
|
|
|
if su - "${postgres_user}" -c "psql postgres -twAc 'SHOW ${conf_name}'" \ |
|
| cmp -s "${__object:?}/parameter/value" - |
|
then |
|
echo present |
|
else |
|
# NOTE: SHOW/SET are case-insentitive, so this command should also be. |
|
case $(su - "${postgres_user}" -c "psql postgres -tAwc \"SELECT CASE WHEN source = 'default' OR setting = boot_val THEN 'default' ELSE source END FROM pg_settings WHERE lower(name) = lower('${conf_name}')\"") |
|
in |
|
('') |
|
# invalid configuration parameter |
|
# (error message was already printed by SHOW command above. |
|
# Yes, it's a hack) |
|
exit 1 |
|
;; |
|
(default) |
|
echo absent |
|
;; |
|
(*) |
|
echo different |
|
;; |
|
esac |
|
fi
|
|
|