#!/bin/bash # Complete CI/CD Infrastructure Deployment Script set -e # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}🚀 MikroTik Bot CI/CD Infrastructure Deployment${NC}" echo -e "${BLUE}=================================================${NC}" # Configuration GIT_SERVER="10.10.0.10" REGISTRY_SERVER="10.10.0.20" PRODUCTION_SERVER="10.10.0.30" # Check if running on Proxmox check_proxmox() { if ! command -v pct &> /dev/null; then echo -e "${RED}❌ This script must be run on Proxmox host${NC}" exit 1 fi echo -e "${GREEN}✅ Proxmox detected${NC}" } # Deploy containers deploy_containers() { echo -e "${YELLOW}📦 Deploying LXC containers...${NC}" bash setup-lxc.sh # Wait for containers to be ready echo -e "${YELLOW}⏳ Waiting for containers to be ready...${NC}" sleep 30 } # Deploy Git Server deploy_git_server() { echo -e "${YELLOW}🔧 Deploying Git Server (Gitea)...${NC}" # Copy docker-compose to git server pct exec 100 -- mkdir -p /opt/gitea pct push 100 gitea-compose.yml /opt/gitea/docker-compose.yml # Create .env file pct exec 100 -- bash -c "cat > /opt/gitea/.env << 'EOF' RUNNER_TOKEN=placeholder-token-will-be-generated EOF" # Deploy Gitea pct exec 100 -- bash -c " cd /opt/gitea docker-compose up -d postgres gitea echo 'Waiting for Gitea to start...' sleep 30 " echo -e "${GREEN}✅ Git Server deployed at http://$GIT_SERVER:3000${NC}" } # Deploy Registry deploy_registry() { echo -e "${YELLOW}🔧 Deploying Docker Registry...${NC}" # Copy docker-compose to registry server pct exec 101 -- mkdir -p /opt/registry pct push 101 registry-compose.yml /opt/registry/docker-compose.yml # Configure insecure registry pct exec 101 -- bash -c " mkdir -p /etc/docker cat > /etc/docker/daemon.json << 'EOF' { \"insecure-registries\": [\"$REGISTRY_SERVER:5000\"] } EOF systemctl restart docker sleep 10 " # Deploy registry pct exec 101 -- bash -c " cd /opt/registry docker-compose up -d " echo -e "${GREEN}✅ Docker Registry deployed at http://$REGISTRY_SERVER:5000${NC}" echo -e "${GREEN}✅ Registry UI available at http://$REGISTRY_SERVER:5001${NC}" } # Deploy Production deploy_production() { echo -e "${YELLOW}🔧 Deploying Production Environment...${NC}" # Configure insecure registry on production pct exec 102 -- bash -c " mkdir -p /etc/docker cat > /etc/docker/daemon.json << 'EOF' { \"insecure-registries\": [\"$REGISTRY_SERVER:5000\"] } EOF systemctl restart docker sleep 10 " # Copy docker-compose to production server pct exec 102 -- mkdir -p /opt/production pct push 102 production-compose.yml /opt/production/docker-compose.yml # Create bot.env file pct exec 102 -- bash -c "cat > /opt/production/bot.env << 'EOF' TG_BOT_TOKEN=your_bot_token_here MT_API_HOST=192.168.1.1 MT_API_USER=admin MT_API_PASS=your_password_here ALLOWED_USER_IDS=123456789 EOF" # Deploy production services pct exec 102 -- bash -c " cd /opt/production docker-compose up -d portainer echo 'Waiting for Portainer to start...' sleep 20 " echo -e "${GREEN}✅ Production Environment deployed${NC}" echo -e "${GREEN}✅ Portainer available at http://$PRODUCTION_SERVER:9000${NC}" } # Configure DNS (optional) configure_dns() { echo -e "${YELLOW}🌐 DNS Configuration (manual step)${NC}" echo "Add these entries to your DNS or /etc/hosts:" echo "$GIT_SERVER git.home.lab" echo "$REGISTRY_SERVER registry.home.lab" echo "$PRODUCTION_SERVER portainer.home.lab" } # Setup Gitea Actions Runner setup_runner() { echo -e "${YELLOW}🏃 Setting up Gitea Actions Runner...${NC}" echo "Manual steps required:" echo "1. Go to http://$GIT_SERVER:3000" echo "2. Create admin account" echo "3. Go to Site Administration > Actions > Runners" echo "4. Generate registration token" echo "5. Update RUNNER_TOKEN in /opt/gitea/.env" echo "6. Restart gitea runner: docker-compose restart runner" } # Main deployment function main() { echo -e "${BLUE}Starting deployment...${NC}" check_proxmox deploy_containers deploy_git_server deploy_registry deploy_production configure_dns setup_runner echo -e "${GREEN}🎉 Deployment Complete!${NC}" echo -e "${BLUE}=================================================${NC}" echo -e "${GREEN}Services:${NC}" echo -e "📁 Git Server: http://$GIT_SERVER:3000" echo -e "📦 Registry: http://$REGISTRY_SERVER:5000" echo -e "🎛️ Registry UI: http://$REGISTRY_SERVER:5001" echo -e "🔧 Portainer: http://$PRODUCTION_SERVER:9000" echo "" echo -e "${YELLOW}Next Steps:${NC}" echo "1. Configure Gitea admin account" echo "2. Create mikrotik-bot repository" echo "3. Setup Gitea Actions runner token" echo "4. Configure bot.env with real credentials" echo "5. Push your code to trigger first deployment" echo "" echo -e "${BLUE}Happy coding! 🚀${NC}" } # Run main function main "$@"