Setup scripts added

This commit is contained in:
2026-06-11 10:13:57 -04:00
parent c564ccc2ea
commit 0decccfaed
11 changed files with 778 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
#!/bin/bash
#
# GlusterFS and NFS Cluster Setup Script
# Configures a 3-node replica GlusterFS volume and mounts it + NFS across all 5 Swarm nodes.
#
set -euo pipefail
# Cluster Configuration
ALL_NODES=("140.44.4.71" "140.44.4.72" "140.44.4.73" "140.44.4.74" "140.44.4.75")
STORAGE_NODES=("140.44.4.71" "140.44.4.72" "140.44.4.73") # Nodes holding the actual data bricks
USER="snarf"
PASS="Katzir476!"
# NFS Configuration
NFS_SERVER="14.10.10.71"
NFS_SHARE="/volume1/docker" # Based on your nginxproxy.yml context
if ! command -v sshpass &> /dev/null; then
echo "ERROR: 'sshpass' is required. Please install it first."
exit 1
fi
# Helper function to run sudo commands remotely via sshpass
run_remote() {
local node=$1
local cmd=$2
echo " [${node}] Running command..."
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$node" "echo '$PASS' | sudo -S bash -c '$cmd'"
}
echo "=== Phase 1: Installing Prerequisites & Creating Directories ==="
for NODE in "${ALL_NODES[@]}"; do
echo "-> Configuring Node $NODE"
run_remote "$NODE" "
apt-get update -y && \
apt-get install -y glusterfs-server glusterfs-client nfs-common && \
systemctl enable --now glusterd && \
mkdir -p /data/glusterfs/swarm/brick && \
mkdir -p /mnt/swarm_shared && \
mkdir -p /mnt/nfs_shares
"
done
echo ""
echo "=== Phase 2: Peering GlusterFS Storage Nodes ==="
PRIMARY_NODE="${STORAGE_NODES[0]}"
# Peer node 2 and 3 from node 1
for i in {1..2}; do
PEER_NODE="${STORAGE_NODES[$i]}"
echo "-> Peering $PRIMARY_NODE with $PEER_NODE"
run_remote "$PRIMARY_NODE" "gluster peer probe $PEER_NODE"
done
# Give peering a few seconds to stabilize
sleep 5
echo ""
echo "=== Phase 3: Creating and Starting GlusterFS Volume ==="
echo "-> Creating 'replica 3' volume 'swarm_vols'..."
run_remote "$PRIMARY_NODE" "
gluster volume create swarm_vols replica 3 \
${STORAGE_NODES[0]}:/data/glusterfs/swarm/brick \
${STORAGE_NODES[1]}:/data/glusterfs/swarm/brick \
${STORAGE_NODES[2]}:/data/glusterfs/swarm/brick \
force || echo 'Volume might already exist.'
"
echo "-> Starting volume 'swarm_vols'..."
run_remote "$PRIMARY_NODE" "gluster volume start swarm_vols || echo 'Volume already started.'"
echo ""
echo "=== Phase 4: Mounting GlusterFS and NFS on ALL Nodes ==="
for NODE in "${ALL_NODES[@]}"; do
echo "-> Mounting file systems on $NODE"
run_remote "$NODE" "
# Remove old fstab entries to prevent duplicates if script is re-run
sed -i '/swarm_vols/d' /etc/fstab
sed -i '/nfs_shares/d' /etc/fstab
# Add to fstab
echo 'localhost:/swarm_vols /mnt/swarm_shared glusterfs defaults,_netdev 0 0' >> /etc/fstab
echo '$NFS_SERVER:$NFS_SHARE /mnt/nfs_shares nfs defaults,nfsvers=4,_netdev 0 0' >> /etc/fstab
# Mount them
mount -a
"
done
echo "=== Storage Cluster Setup Complete ==="