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.
68 lines
2.5 KiB
68 lines
2.5 KiB
#!/bin/bash
|
|
|
|
function check() {
|
|
PREFIX="recipe:postgresql:check"
|
|
container_running "$CONTAINER" || return 10
|
|
echo "checking postgresql regarding access to the bridge subnet <$BRIDGE_SUBNET>..."
|
|
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
systemctl is-active postgresql.service &>/dev/null
|
|
ss -tlnp | grep postgres | grep -q 0.0.0.0:5432
|
|
PG_VERSION=\$(pg_lsclusters -h | cut -d' ' -f1)
|
|
grep -Eq "^host.*all.*all.*$BRIDGE_SUBNET.*md5" /etc/postgresql/\$PG_VERSION/main/pg_hba.conf
|
|
test -f /etc/default/autopostgresqlbackup
|
|
EOF
|
|
status="$?"
|
|
[[ $status -eq 0 ]] && echo "container <$CONTAINER> approved!"
|
|
return $status
|
|
}
|
|
|
|
function install() {
|
|
PREFIX="recipe:postgresql:install"
|
|
: "$PREFIX"
|
|
|
|
echowarn "initializing postgresql regarding access to the bridge subnet <$BRIDGE_SUBNET>..."
|
|
|
|
launch_container "$CONTAINER"
|
|
lxc exec "$CONTAINER" -- bash <<EOF
|
|
set -Eeuo pipefail
|
|
|
|
apt update
|
|
. /opt/debian-bash/lib/functions.sh
|
|
/opt/debian-bash/tools/idem_apt_install postgresql
|
|
|
|
echo -n "start postgresql now..."
|
|
PG_VERSION=\$(pg_lsclusters -h | cut -d' ' -f1)
|
|
pg_ctlcluster \$PG_VERSION main start
|
|
echo "OK"
|
|
|
|
function systemctl-exists() ([ \$(systemctl list-unit-files "\${1}*" | wc -l) -gt 3 ])
|
|
systemctl-exists exim4.service && systemctl disable exim4.service
|
|
|
|
/opt/debian-bash/tools/append_or_replace "^listen_addresses = .*$" "listen_addresses = '0.0.0.0'" /etc/postgresql/\$PG_VERSION/main/postgresql.conf
|
|
/opt/debian-bash/tools/append_or_replace "^host.*all.*all.*$BRIDGE_SUBNET.*md5" "host\tall\t\tall\t\t$BRIDGE_SUBNET\t\tmd5" /etc/postgresql/\$PG_VERSION/main/pg_hba.conf
|
|
systemctl restart postgresql.service
|
|
EOF
|
|
|
|
echo -n "copying <autopostgresqlbackup> files over container <$CONTAINER> ... "
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/autopostgresqlbackup/script" "$CONTAINER/usr/sbin/autopostgresqlbackup"
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/autopostgresqlbackup/cron.daily" "$CONTAINER/etc/cron.daily/autopostgresqlbackup"
|
|
lxc file push --uid 0 --gid 0 "$MIAOU_BASEDIR/templates/autopostgresqlbackup/default.conf" "$CONTAINER/etc/default/autopostgresqlbackup"
|
|
PREFIX="" echo OK
|
|
|
|
}
|
|
|
|
# MAIN
|
|
. "$MIAOU_BASEDIR/lib/init.sh"
|
|
|
|
arg1_required "$@"
|
|
|
|
CONTAINER="$1"
|
|
BRIDGE_SUBNET=$(lxc network get lxdbr0 ipv4.address)
|
|
readonly CONTAINER BRIDGE_SUBNET
|
|
|
|
check || (
|
|
install
|
|
check
|
|
)
|