#!/bin/bash # Install PostgreSQL on all database containers set -uo pipefail NODE_IP="${PROXMOX_HOST_R630_01}" log_info() { echo -e "\033[0;32m[INFO]\033[0m $1"; } log_success() { echo -e "\033[0;32m[✓]\033[0m $1"; } log_error() { echo -e "\033[0;31m[ERROR]\033[0m $1"; } install_postgresql() { local vmid="$1" log_info "Installing PostgreSQL on CT $vmid..." ssh -o ConnectTimeout=20 -o StrictHostKeyChecking=no root@${NODE_IP} " pct stop $vmid 2>/dev/null || true sleep 3 pct mount $vmid >/dev/null 2>&1 MOUNT=\$(pct mountpoint $vmid 2>/dev/null || echo '/var/lib/lxc/$vmid/rootfs') if [ -d \"\$MOUNT\" ]; then chroot \$MOUNT bash -c ' export DEBIAN_FRONTEND=noninteractive apt-get update -qq apt-get install -y -qq wget ca-certificates gnupg lsb-release wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - echo \"deb http://apt.postgresql.org/pub/repos/apt \$(lsb_release -cs)-pgdg main\" > /etc/apt/sources.list.d/pgdg.list apt-get update -qq apt-get install -y -qq postgresql-15 postgresql-contrib-15 2>&1 | tail -5 echo \"PostgreSQL installed\" ' pct unmount $vmid fi pct start $vmid sleep 5 " && log_success "PostgreSQL installed on CT $vmid" || log_error "Failed on CT $vmid" } echo "Installing PostgreSQL on database containers..." for vmid in 10000 10001 10100 10101; do install_postgresql "$vmid" sleep 3 done echo "" log_info "Verifying installations..." for vmid in 10000 10001 10100 10101; do result=$(ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@${NODE_IP} \ "pct exec $vmid -- bash -c 'ls /usr/lib/postgresql/ 2>&1 | head -1'") echo " CT $vmid: $result" done echo "" log_success "PostgreSQL installation complete!"