@@ -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
3343if [[ -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
3747fi
3848
3949if [[ -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
4353fi
4454
4555# Use SSH_CMD from environment or default to ssh
4656SSH_CMD=" ${SSH_CMD:- ssh} "
4757
4858print_blue " Connecting to swarm manager: $MANAGER_NODE "
59+ [[ " $ACTION " != " install" ]] && print_blue " Action: $ACTION "
4960if [[ " $SSH_CMD " != " ssh" ]]; then
5061 echo " Using SSH command: $SSH_CMD "
5162fi
8899CURRENT=0
89100for 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}}"
109133EOF
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
118183done
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