vagrant-k8s/scripts/vagrant-ips.sh

40 lines
937 B
Bash
Executable File

#!/bin/bash
set -x
# IPs file already exist
if [ -f .k8s-ips ]; then
echo "NOTICE: .k8s-ips already exists"
exit 0
fi
# Create file with vagrant-k8s private DHCP IPs
echo "declare -a K8S_NODES" > .k8s-ips
for i in {1..3}; do
IP=$(vagrant ssh "node$i" -c "hostname -I | cut -d' ' -f2" 2>/dev/null)
echo "K8S_NODES[$i]=$IP" >> .k8s-ips
done
# Source new IP file
# shellcheck disable=SC1091
source .k8s-ips
# Grab last octet on IP addresses (assuming /24)
last_octets=()
for i in {1..3}; do
last_octets+=("$(echo "${K8S_NODES[$i]}" | rev | cut -d. -f1 | rev)")
done
# Generate random octet and ensure it's not taken
while true
do
available=true
random_octet="$(shuf -i2-254 -n1)"
for i in "${last_octets[@]}"; do
[ "$random_octet" == "${i::-1}" ] && available=false
done
[ "$available" == true ] && break
done
# Add keepalived IP address in order
sed -i "/declare/a K8S_NODES[0]=${K8S_NODES[1]%.*}.$random_octet" .k8s-ips