-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
executable file
·91 lines (72 loc) · 3.76 KB
/
setup.sh
File metadata and controls
executable file
·91 lines (72 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
set -e
# Colored logging functions
info() { echo -e "\e[34m[INFO]\e[0m $1"; }
ok() { echo -e "\e[32m[OK]\e[0m $1"; }
err() { echo -e "\e[31m[ERROR]\e[0m $1"; }
# Controlled exit on failure
fail() {
err "$1"
exit 1
}
echo "=============================================================================="
echo "███╗ ██╗ ██████╗ ██████╗ ███████╗███████╗███████╗███╗ ██╗███████╗███████╗"
echo "████╗ ██║██╔═══██╗██╔══██╗██╔════╝██╔════╝██╔════╝████╗ ██║██╔════╝██╔════╝"
echo "██╔██╗ ██║██║ ██║██║ ██║█████╗ ███████╗█████╗ ██╔██╗ ██║███████╗█████╗"
echo "██║╚██╗██║██║ ██║██║ ██║██╔══╝ ╚════██║██╔══╝ ██║╚██╗██║╚════██║██╔══╝"
echo "██║ ╚████║╚██████╔╝██████╔╝███████╗███████║███████╗██║ ╚████║███████║███████╗"
echo "╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝╚═╝ ╚═══╝╚══════╝╚══════╝"
echo "============================================================================="
echo " N O D E M O N I T O R I N G P L A T F O R M"
echo "--------------------------------------"
echo " DOCKER SWARM SETUP SCRIPT"
echo "--------------------------------------"
### STEP 0 - Check if Docker daemon is running
info "Checking if Docker is running..."
if ! docker info > /dev/null 2>&1; then
fail "Docker is not running or not accessible.
Please ensure:
- Docker daemon is started
- Your user has permission to run Docker (e.g., part of docker group)"
fi
ok "Docker is running."
### STEP 1 - Initialize Swarm
info "Checking Swarm status..."
SWARM_STATUS=$(docker info --format '{{.Swarm.LocalNodeState}}')
if [ "$SWARM_STATUS" == "active" ]; then
ok "Swarm is already active."
else
info "Swarm is not active. Initializing..."
docker swarm init --advertise-addr "$(hostname -I | awk '{print $1}')" > /dev/null 2>&1 \
|| fail "Failed to initialize Docker Swarm!"
ok "Swarm initialized successfully."
fi
### STEP 2 - Create overlay networks
NETWORKS=("keycloak_net" "backend_net" "monitoring_net")
for NET in "${NETWORKS[@]}"; do
info "Checking network $NET..."
if docker network ls | grep -q "$NET"; then
ok "Network $NET already exists."
else
info "Creating overlay network $NET..."
docker network create --driver overlay "$NET" > /dev/null 2>&1 \
|| fail "Failed to create network $NET!"
ok "Network $NET created."
fi
done
echo ""
ok "All networks created/verified successfully."
### STEP 3 - Final validation
info "Performing final validation..."
docker info --format '{{.Swarm.LocalNodeState}}' | grep -q "active" \
|| fail "Swarm is not functional!"
for NET in "${NETWORKS[@]}"; do
docker network ls | grep -q "$NET" \
|| fail "Network $NET is missing!"
done
ok "Setup complete! Docker Swarm and networks are ready."
echo "--------------------------------------"
echo "You can now run:"
echo " > deploy.sh script"
echo " > docker stack deploy -c stack.yml monitor-platform"
echo "--------------------------------------"