#!/bin/bash set -e # Cores para o output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # Elevação de privilégio if [ "$EUID" -ne 0 ]; then SUDO="sudo" else SUDO="" fi echo -e "${YELLOW}=== Configuração de Agentes Self-Hosted Azure (Modo Privilegiado) ===${NC}\n" # 1. Pega informações do usuário read -p "Digite a URL da sua organização Azure [default: https://dev.azure.com/Sittax]: " AZP_URL if [ -z "$AZP_URL" ]; then AZP_URL="https://dev.azure.com/Sittax"; fi # Pergunta pelo PAT ocultando o output echo -n "Digite o seu Personal Access Token (PAT): " read -s AZP_TOKEN echo "" read -p "Digite o nome do Pool [default: Default]: " AZP_POOL if [ -z "$AZP_POOL" ]; then AZP_POOL="Default"; fi read -p "Quantos agentes você deseja criar? [default: 2]: " NUM_AGENTS if [ -z "$NUM_AGENTS" ]; then NUM_AGENTS="2"; fi read -p "Prefixo dos agentes? [default: sittax-agent]: " AGENTS_PREFIX if [ -z "$AGENTS_PREFIX" ]; then AGENTS_PREFIX="sittax-agent"; fi if ! [[ "$NUM_AGENTS" =~ ^[0-9]+$ ]] || [ "$NUM_AGENTS" -lt 1 ]; then echo -e "${RED}Erro: A quantidade de agentes deve ser um número inteiro positivo.${NC}" exit 1 fi # 2. Gera o docker-compose.yml dinamicamente COMPOSE_FILE="docker-compose.yml" echo "services:" > $COMPOSE_FILE for (( i=1; i<=$NUM_AGENTS; i++ )) do AGENT_NAME="$AGENTS_PREFIX-$i" cat << EOF >> $COMPOSE_FILE $AGENT_NAME: build: context: . dockerfile: Dockerfile container_name: $AGENT_NAME restart: always privileged: true dns: - 8.8.8.8 - 1.1.1.1 tmpfs: - /tmp:rw,size=2g ulimits: nofile: soft: 65536 hard: 65536 volumes: - /var/run/docker.sock:/var/run/docker.sock - ${AGENT_NAME}-work:/home/azureuser/myagent/_work - /opt/sittax/cache/nuget:/home/azureuser/.nuget/packages - /opt/sittax/cache/npm:/home/azureuser/.npm environment: - AZP_URL=$AZP_URL - AZP_TOKEN=$AZP_TOKEN - AZP_POOL=$AZP_POOL - AZP_AGENT_NAME=$AGENT_NAME EOF done # Seção de volumes nomeados (um por agente para evitar conflitos de build) echo "" >> $COMPOSE_FILE echo "volumes:" >> $COMPOSE_FILE for (( i=1; i<=$NUM_AGENTS; i++ )) do echo " $AGENTS_PREFIX-$i-work:" >> $COMPOSE_FILE done echo -e "\n${GREEN}Arquivo docker-compose.yml criado com $NUM_AGENTS agentes!${NC}" # 3. Cria diretórios de cache compartilhados no host echo "Criando diretórios de cache no host..." $SUDO mkdir -p /opt/sittax/cache/nuget /opt/sittax/cache/npm $SUDO chmod 777 /opt/sittax/cache/nuget /opt/sittax/cache/npm # 4. Inicia os containers via Compose echo -e "\n${YELLOW}Iniciando build e subindo containers...${NC}" $SUDO docker compose up -d --build echo -e "\n${GREEN}=== Configuração concluída! ===${NC}" echo "Seus agentes foram iniciados em background com privilégios elevados." echo "Para monitorar: sudo docker compose logs -f"