k8ssalt-public/deploySalt.sh
2023-08-04 14:22:51 +00:00

75 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
applySed=0
checkReplicas() {
if [[ "$1" == "-r" ]]; then
shift
if [[ "$1" =~ ^[0-9]+$ ]]; then
replicas="$1"
applySed=1
else
echo "Error: Invalid REPLICAS value. Please provide a positive integer."
exit 1
fi
shift
else
replicas=1
fi
}
applySaltMinion() {
if [ "$applySed" -eq 1 ]; then
echo "Applying Salt-minion yaml with $replicas replicas..."
sed "s/replicas:.*/replicas: $replicas/" salt-minion.yaml | kubectl apply -f -
else
echo "Applying Salt-minion yaml..."
kubectl apply -f salt-minion.yaml
fi
}
deleteSalt() {
echo "Deleting Salt infrastructure..."
kubectl delete -f salt-minion.yaml
kubectl delete -f salt-master.yaml
echo "Salt infrastructure deleted."
}
waitUntilSaltMasterInitialized() {
attempts=0
max_attempts=10
while [ "$attempts" -lt "$max_attempts" ]; do
echo "Checking if Salt-master has initialized..."
sleep 5
if kubectl exec "$saltmaster" -it -- /bin/sh -c "salt-key -L" | grep -q "minion"; then
echo "Salt-master is up and running. Accepting minion keys..."
kubectl exec "$saltmaster" -it -- /bin/sh -c "salt-key -A -y"
break
fi
((attempts++))
done
}
deploySalt() {
if [[ "$1" == "-d" ]]; then
deleteSalt
else
checkReplicas "$@"
applySaltMinion
echo "Applying Salt-master yaml..."
kubectl apply -f salt-master.yaml
echo "Checking for Salt-master pod name..."
saltmaster=$(kubectl get pods | grep salt-master | cut -d ' ' -f 1)
kubectl wait --for=condition=Ready "pod/$saltmaster" --timeout=300s
waitUntilSaltMasterInitialized
fi
}
clear
# Call the main function
deploySalt "$@"