Skip to content

Commit 8150fd3

Browse files
authored
Swarm install script add uninstall and force upgrade (#11)
1 parent 0e54c0e commit 8150fd3

File tree

1 file changed

+92
-17
lines changed

1 file changed

+92
-17
lines changed

deploy-to-swarm.sh

Lines changed: 92 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,34 @@ print_blue() {
2929
echo "${BOLD}${BLUE}$*${RESET}"
3030
}
3131

32+
# Default action is install
33+
ACTION="${ACTION:-install}"
34+
35+
# Validate ACTION parameter
36+
if [[ "$ACTION" != "install" && "$ACTION" != "uninstall" && "$ACTION" != "force_upgrade" ]]; then
37+
print_red "Error: Invalid ACTION parameter: $ACTION"
38+
echo "Valid actions: install, uninstall, force_upgrade"
39+
exit 1
40+
fi
41+
3242
# Check required environment variables
3343
if [[ -z "${MANAGER_NODE:-}" ]]; then
3444
print_red "Error: MANAGER_NODE environment variable is required"
35-
echo "Usage: MANAGER_NODE=user@manager-node COLLECTOR_SECRET=secret [SSH_CMD='tsh ssh'] $0"
45+
echo "Usage: MANAGER_NODE=user@manager-node COLLECTOR_SECRET=secret [ACTION=install|uninstall|force_upgrade] [SSH_CMD='tsh ssh'] $0"
3646
exit 1
3747
fi
3848

3949
if [[ -z "${COLLECTOR_SECRET:-}" ]]; then
4050
print_red "Error: COLLECTOR_SECRET environment variable is required"
41-
echo "Usage: MANAGER_NODE=user@manager-node COLLECTOR_SECRET=secret [SSH_CMD='tsh ssh'] $0"
51+
echo "Usage: MANAGER_NODE=user@manager-node COLLECTOR_SECRET=secret [ACTION=install|uninstall|force_upgrade] [SSH_CMD='tsh ssh'] $0"
4252
exit 1
4353
fi
4454

4555
# Use SSH_CMD from environment or default to ssh
4656
SSH_CMD="${SSH_CMD:-ssh}"
4757

4858
print_blue "Connecting to swarm manager: $MANAGER_NODE"
59+
[[ "$ACTION" != "install" ]] && print_blue "Action: $ACTION"
4960
if [[ "$SSH_CMD" != "ssh" ]]; then
5061
echo "Using SSH command: $SSH_CMD"
5162
fi
@@ -88,7 +99,18 @@ echo
8899
CURRENT=0
89100
for NODE in $NODES; do
90101
((CURRENT++))
91-
print_blue "Deploying to node: $NODE ($CURRENT/$NODE_COUNT)"
102+
103+
case "$ACTION" in
104+
"install")
105+
print_blue "Installing on node: $NODE ($CURRENT/$NODE_COUNT)"
106+
;;
107+
"uninstall")
108+
print_blue "Uninstalling from node: $NODE ($CURRENT/$NODE_COUNT)"
109+
;;
110+
"force_upgrade")
111+
print_blue "Force upgrading on node: $NODE ($CURRENT/$NODE_COUNT)"
112+
;;
113+
esac
92114

93115
# Extract user from MANAGER_NODE if present
94116
if [[ "$MANAGER_NODE" == *"@"* ]]; then
@@ -98,23 +120,76 @@ for NODE in $NODES; do
98120
NODE_TARGET="$NODE"
99121
fi
100122

101-
if $SSH_CMD "$NODE_TARGET" /bin/bash <<EOF
102-
set -e
103-
echo "Running: Better Stack collector install..."
104-
curl -sSL https://raw.githubusercontent.com/BetterStackHQ/collector/main/install.sh | \\
105-
COLLECTOR_SECRET="$COLLECTOR_SECRET" bash
123+
case "$ACTION" in
124+
"install")
125+
if $SSH_CMD "$NODE_TARGET" /bin/bash <<EOF
126+
set -e
127+
echo "Running: Better Stack collector install..."
128+
curl -sSL https://raw.githubusercontent.com/BetterStackHQ/collector/main/install.sh | \\
129+
COLLECTOR_SECRET="$COLLECTOR_SECRET" bash
106130
107-
echo "Checking deployment status..."
108-
docker ps --filter "name=better-stack" --format "table {{.Names}}\t{{.Status}}"
131+
echo "Checking deployment status..."
132+
docker ps --filter "name=better-stack" --format "table {{.Names}}\t{{.Status}}"
109133
EOF
110-
then
111-
print_green "✓ Better Stack collector deployed to $NODE"
112-
else
113-
print_red "✗ Failed to deploy to $NODE"
114-
exit 1
115-
fi
134+
then
135+
print_green "✓ Better Stack collector installed on $NODE"
136+
else
137+
print_red "✗ Failed to install on $NODE"
138+
exit 1
139+
fi
140+
;;
141+
142+
"uninstall")
143+
if $SSH_CMD "$NODE_TARGET" /bin/bash <<EOF
144+
set -e
145+
echo "Stopping and removing Better Stack containers..."
146+
docker stop better-stack-collector better-stack-beyla 2>/dev/null || true
147+
docker rm better-stack-collector better-stack-beyla 2>/dev/null || true
148+
echo "Containers removed."
149+
EOF
150+
then
151+
print_green "✓ Better Stack collector uninstalled from $NODE"
152+
else
153+
print_red "✗ Failed to uninstall from $NODE"
154+
exit 1
155+
fi
156+
;;
157+
158+
"force_upgrade")
159+
if $SSH_CMD "$NODE_TARGET" /bin/bash <<EOF
160+
set -e
161+
echo "Stopping and removing Better Stack containers..."
162+
docker stop better-stack-collector better-stack-beyla 2>/dev/null || true
163+
docker rm better-stack-collector better-stack-beyla 2>/dev/null || true
164+
echo "Containers removed. Waiting 3 seconds..."
165+
sleep 3
166+
echo "Installing Better Stack collector..."
167+
curl -sSL https://raw.githubusercontent.com/BetterStackHQ/collector/main/install.sh | \\
168+
COLLECTOR_SECRET="$COLLECTOR_SECRET" bash
169+
170+
echo "Checking deployment status..."
171+
docker ps --filter "name=better-stack" --format "table {{.Names}}\t{{.Status}}"
172+
EOF
173+
then
174+
print_green "✓ Better Stack collector force upgraded on $NODE"
175+
else
176+
print_red "✗ Failed to force upgrade on $NODE"
177+
exit 1
178+
fi
179+
;;
180+
esac
116181
echo
117182

118183
done
119184

120-
print_green "✓ Better Stack collector successfully deployed to all swarm nodes!"
185+
case "$ACTION" in
186+
"install")
187+
print_green "✓ Better Stack collector successfully installed on all swarm nodes!"
188+
;;
189+
"uninstall")
190+
print_green "✓ Better Stack collector successfully uninstalled from all swarm nodes!"
191+
;;
192+
"force_upgrade")
193+
print_green "✓ Better Stack collector successfully force upgraded on all swarm nodes!"
194+
;;
195+
esac

0 commit comments

Comments
 (0)