Add centralized PostgreSQL database setup script
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Waiting to run
Deploy to Testnet / deploy-testnet (push) Has started running
Node Failover Simulation / failover-test (push) Waiting to run
Multi-Node Stress Testing / stress-test (push) Successful in 13s
Deploy to Testnet / notify-deployment (push) Has been cancelled
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Waiting to run
Deploy to Testnet / deploy-testnet (push) Has started running
Node Failover Simulation / failover-test (push) Waiting to run
Multi-Node Stress Testing / stress-test (push) Successful in 13s
Deploy to Testnet / notify-deployment (push) Has been cancelled
This commit is contained in:
116
infra/scripts/setup_postgresql_databases.sh
Executable file
116
infra/scripts/setup_postgresql_databases.sh
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ============================================================================
|
||||
# AITBC PostgreSQL Database Setup Script
|
||||
# ============================================================================
|
||||
# This script creates all PostgreSQL databases and users required for AITBC services
|
||||
# ============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${BLUE}=== AITBC PostgreSQL Database Setup ===${NC}"
|
||||
echo ""
|
||||
|
||||
# Function to create user and database
|
||||
setup_database() {
|
||||
local db_name=$1
|
||||
local db_user=$2
|
||||
local db_password=${3:-password}
|
||||
|
||||
echo -e "${BLUE}Setting up ${db_name}...${NC}"
|
||||
|
||||
# Create user if not exists
|
||||
sudo -u postgres psql -c "DO \$\$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '${db_user}') THEN
|
||||
CREATE USER ${db_user} WITH PASSWORD '${db_password}';
|
||||
END IF;
|
||||
END
|
||||
\$\$;" 2>/dev/null || echo "User ${db_user} already exists"
|
||||
|
||||
# Create database if not exists
|
||||
sudo -u postgres psql -c "SELECT 'CREATE DATABASE ${db_name} OWNER ${db_user}' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${db_name}')\\gexec" 2>/dev/null || echo "Database ${db_name} already exists"
|
||||
|
||||
# Grant privileges
|
||||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE ${db_name} TO ${db_user};" 2>/dev/null || true
|
||||
|
||||
# Grant schema permissions
|
||||
sudo -u postgres psql -d ${db_name} -c "ALTER SCHEMA public OWNER TO ${db_user};" 2>/dev/null || true
|
||||
sudo -u postgres psql -d ${db_name} -c "GRANT CREATE ON SCHEMA public TO ${db_user};" 2>/dev/null || true
|
||||
|
||||
echo -e "${GREEN}✅ ${db_name} setup complete${NC}"
|
||||
}
|
||||
|
||||
# Function to configure PostgreSQL for remote connections
|
||||
configure_remote_connections() {
|
||||
local network_cidr=${1:-10.1.223.0/24}
|
||||
|
||||
echo -e "${BLUE}Configuring PostgreSQL for remote connections...${NC}"
|
||||
|
||||
# Update listen_addresses
|
||||
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/*/main/postgresql.conf 2>/dev/null || echo "listen_addresses already configured"
|
||||
|
||||
# Add pg_hba.conf rule if not exists
|
||||
if ! sudo grep -q "${network_cidr}" /etc/postgresql/*/main/pg_hba.conf 2>/dev/null; then
|
||||
sudo bash -c "echo \"host all all ${network_cidr} scram-sha-256\" >> /etc/postgresql/*/main/pg_hba.conf"
|
||||
echo -e "${GREEN}✅ Added pg_hba.conf rule for ${network_cidr}${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ pg_hba.conf rule already exists for ${network_cidr}${NC}"
|
||||
fi
|
||||
|
||||
# Reload PostgreSQL
|
||||
sudo systemctl reload postgresql.service 2>/dev/null || sudo systemctl restart postgresql.service
|
||||
|
||||
echo -e "${GREEN}✅ PostgreSQL remote connections configured${NC}"
|
||||
}
|
||||
|
||||
# Main setup
|
||||
echo -e "${BLUE}Creating databases and users...${NC}"
|
||||
echo ""
|
||||
|
||||
# AITBC core databases (shared user)
|
||||
setup_database "aitbc_coordinator" "aitbc_user"
|
||||
setup_database "aitbc_exchange" "aitbc_user"
|
||||
setup_database "aitbc_wallet" "aitbc_user"
|
||||
|
||||
# Service-specific databases
|
||||
setup_database "aitbc_marketplace" "aitbc_marketplace"
|
||||
setup_database "aitbc_governance" "aitbc_governance"
|
||||
setup_database "aitbc_trading" "aitbc_trading"
|
||||
setup_database "aitbc_gpu" "aitbc_gpu"
|
||||
setup_database "aitbc_ai" "aitbc_ai"
|
||||
|
||||
echo ""
|
||||
echo -e "${BLUE}=== Database Summary ===${NC}"
|
||||
sudo -u postgres psql -c "\l" | grep aitbc
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}=== Setup Complete ===${NC}"
|
||||
echo ""
|
||||
echo "Databases created:"
|
||||
echo " - aitbc_coordinator (user: aitbc_user)"
|
||||
echo " - aitbc_exchange (user: aitbc_user)"
|
||||
echo " - aitbc_wallet (user: aitbc_user)"
|
||||
echo " - aitbc_marketplace (user: aitbc_marketplace)"
|
||||
echo " - aitbc_governance (user: aitbc_governance)"
|
||||
echo " - aitbc_trading (user: aitbc_trading)"
|
||||
echo " - aitbc_gpu (user: aitbc_gpu)"
|
||||
echo " - aitbc_ai (user: aitbc_ai)"
|
||||
echo ""
|
||||
echo "To configure PostgreSQL for remote connections, run:"
|
||||
echo " $0 --remote-configure [network-cidr]"
|
||||
echo " Example: $0 --remote-configure 10.1.223.0/24"
|
||||
echo ""
|
||||
|
||||
# Handle optional remote configuration
|
||||
if [[ "$1" == "--remote-configure" ]]; then
|
||||
network_cidr=${2:-10.1.223.0/24}
|
||||
configure_remote_connections "$network_cidr"
|
||||
fi
|
||||
Reference in New Issue
Block a user