feat: Add support for AWS RDS deployment and enhance maintenance scheduling documentation with pg_cron and Systemd Timer options.
This commit is contained in:
@@ -10,16 +10,20 @@ RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 --pg <16|17|18> --zabbix <7.0|7.4>"
|
||||
echo "Example: $0 --pg 16 --zabbix 7.0"
|
||||
echo "Usage: $0 --pg <16|17|18> --zabbix <7.0|7.4> [--rds] [--rds-drop]"
|
||||
echo "Example: $0 --pg 16 --zabbix 7.0 [--rds-drop]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
USE_RDS=false
|
||||
DROP_RDS=false
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
--pg) PG_VERSION="$2"; shift ;;
|
||||
--zabbix) ZABBIX_VERSION="$2"; shift ;;
|
||||
--rds) USE_RDS=true ;;
|
||||
--rds-drop) USE_RDS=true; DROP_RDS=true ;;
|
||||
*) echo "Unknown parameter: $1"; usage ;;
|
||||
esac
|
||||
shift
|
||||
@@ -113,23 +117,51 @@ fi
|
||||
# Export variable for Docker Compose
|
||||
export PG_VERSION=$PG_VERSION
|
||||
|
||||
# Run Docker Compose
|
||||
echo -e "${GREEN}Starting PostgreSQL container...${NC}"
|
||||
docker compose up -d
|
||||
|
||||
echo -e "${GREEN}Waiting for database to be ready...${NC}"
|
||||
# Simple wait loop
|
||||
for i in {1..30}; do
|
||||
if docker exec zabbix-db-test pg_isready -U zabbix > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}Database is ready!${NC}"
|
||||
break
|
||||
if [ "$USE_RDS" = "true" ]; then
|
||||
echo -e "${GREEN}Deploying directly to RDS environment...${NC}"
|
||||
if [ ! -f "../db_credentials" ]; then
|
||||
echo -e "${RED}Error: ../db_credentials file not found. Please create it first.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Initialize RDS (create/drop user and db)
|
||||
if [ "$DROP_RDS" = "true" ]; then
|
||||
echo "Initializing Zabbix RDS user and database (with DROP requested)..."
|
||||
bash ../setup_rds.sh --drop
|
||||
else
|
||||
echo "Initializing Zabbix RDS user and database..."
|
||||
bash ../setup_rds.sh
|
||||
fi
|
||||
|
||||
source ../db_credentials
|
||||
export PGPASSWORD="$ZBX_DB_PASSWORD"
|
||||
|
||||
echo "Applying scripts from init_scripts/ to RDS..."
|
||||
for sql_file in $(ls ./init_scripts/*.sql | sort); do
|
||||
echo "Executing $sql_file..."
|
||||
psql "host=$DB_HOST port=$DB_PORT dbname=$ZBX_DB_NAME user=$ZBX_DB_USER sslmode=$DB_SSL_MODE sslrootcert=../$DB_SSL_ROOT_CERT" -f "$sql_file" -v ON_ERROR_STOP=1
|
||||
done
|
||||
|
||||
echo -e "${GREEN}RDS Environment ready.${NC}"
|
||||
echo "Connect: psql \"host=$DB_HOST port=$DB_PORT dbname=$ZBX_DB_NAME user=$ZBX_DB_USER sslmode=$DB_SSL_MODE sslrootcert=../$DB_SSL_ROOT_CERT\""
|
||||
else
|
||||
# Run Docker Compose
|
||||
echo -e "${GREEN}Starting PostgreSQL container...${NC}"
|
||||
docker compose up -d
|
||||
|
||||
# Check if data generation finished (it runs as part of init, which might take a bit longer than just port open)
|
||||
# We can check logs
|
||||
echo "To follow initialization logs, run: docker logs -f zabbix-db-test"
|
||||
echo -e "${GREEN}Environment ready.${NC}"
|
||||
echo "Connect: psql -h localhost -p 5432 -U zabbix -d zabbix"
|
||||
echo -e "${GREEN}Waiting for database to be ready...${NC}"
|
||||
# Simple wait loop
|
||||
for i in {1..30}; do
|
||||
if docker exec zabbix-db-test pg_isready -U zabbix > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}Database is ready!${NC}"
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Check if data generation finished
|
||||
echo "To follow initialization logs, run: docker logs -f zabbix-db-test"
|
||||
echo -e "${GREEN}Environment ready.${NC}"
|
||||
echo "Connect: psql -h localhost -p 5432 -U zabbix -d zabbix"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user