#!/bin/bash set -e GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' CYAN='\033[0;36m' NC='\033[0m' SWARM_MANAGER_IP="144.22.229.35" SWARM_MANAGER_PORT="2377" echo -e "${YELLOW}=== Provisionamento de Nó Worker — Docker Swarm Sittax ===${NC}\n" # Elevação de privilégio if [ "$EUID" -ne 0 ]; then SUDO="sudo" else SUDO="" fi # ───────────────────────────────────────── # [1/4] Dependências do SO # ───────────────────────────────────────── echo -e "${YELLOW}[1/4] Instalando dependências...${NC}" $SUDO apt-get update -qq $SUDO apt-get install -y -qq \ ca-certificates curl gnupg lsb-release \ jq git unzip wget apt-transport-https # ───────────────────────────────────────── # [2/4] Docker Engine # ───────────────────────────────────────── if ! command -v docker &>/dev/null; then echo -e "${YELLOW}[2/4] Instalando Docker Engine...${NC}" $SUDO install -m 0755 -d /etc/apt/keyrings $SUDO curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc $SUDO chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \ https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ $SUDO tee /etc/apt/sources.list.d/docker.list > /dev/null $SUDO apt-get update -qq $SUDO apt-get install -y \ docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin $SUDO systemctl enable docker $SUDO systemctl start docker echo -e "${GREEN}Docker instalado com sucesso.${NC}" else echo -e "${GREEN}[2/4] Docker já instalado. $(docker --version)${NC}" fi # ───────────────────────────────────────── # [3/4] Daemon do Docker # ───────────────────────────────────────── echo -e "${YELLOW}[3/4] Configurando daemon do Docker...${NC}" $SUDO tee /etc/docker/daemon.json > /dev/null << 'DAEMON_EOF' { "log-driver": "local", "log-opts": { "max-size": "50m", "max-file": "3" }, "max-concurrent-downloads": 10, "max-concurrent-uploads": 5 } DAEMON_EOF $SUDO systemctl restart docker echo -e "${GREEN}Daemon configurado.${NC}" # ───────────────────────────────────────── # [4/4] Entrada no Swarm # ───────────────────────────────────────── echo -e "${YELLOW}[4/4] Configurando entrada no Swarm...${NC}" # Verifica se já está em um swarm SWARM_STATE=$($SUDO docker info --format '{{.Swarm.LocalNodeState}}' 2>/dev/null || echo "inactive") if [ "$SWARM_STATE" = "active" ]; then echo -e "${YELLOW}Atenção: este nó já faz parte de um Swarm.${NC}" read -p "Deseja sair do Swarm atual e entrar no novo? (s/n) [default: n]: " LEAVE_CONFIRM -.${NC}" read -p "Tentar novamente? (s/n): " RETRY