Add parallel deployment on all node helper function
This commit is contained in:
parent
d6a068f952
commit
67b030fd8f
1 changed files with 70 additions and 0 deletions
70
shell.nix
70
shell.nix
|
@ -91,13 +91,83 @@ pkgs.mkShell {
|
||||||
}
|
}
|
||||||
echo "Tpm Key files shreded."
|
echo "Tpm Key files shreded."
|
||||||
}
|
}
|
||||||
|
deployparallel() {
|
||||||
|
echo "Deploying to all nodes in parallel..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
local nodes=($(grep -E '^[[:space:]]*[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+[[:space:]]*=' nodes.nix | \
|
||||||
|
sed 's/^[[:space:]]*//; s/[[:space:]]*=.*//' | \
|
||||||
|
grep -v '^#'))
|
||||||
|
|
||||||
|
if [ ${"\${#nodes[@]}"} -eq 0 ]; then
|
||||||
|
echo "No nodes found in nodes.nix"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found ${"\${#nodes[@]}"} nodes:"
|
||||||
|
for node in "${"\${nodes[@]}"}"; do
|
||||||
|
echo " - $node"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
read -p "Deploy to all these nodes? (yes/no): " confirm
|
||||||
|
if [ "$confirm" != "yes" ]; then
|
||||||
|
echo "Deployment cancelled."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Starting parallel deployment..."
|
||||||
|
echo "============================================"
|
||||||
|
|
||||||
|
local tmpdir=$(mktemp -d)
|
||||||
|
local pids=()
|
||||||
|
|
||||||
|
for node in "${"\${nodes[@]}"}"; do
|
||||||
|
{
|
||||||
|
echo "[$node] Starting deployment..."
|
||||||
|
deploy -s ".#$node" 2>&1 | while IFS= read -r line; do
|
||||||
|
echo "[$node] $line"
|
||||||
|
done
|
||||||
|
echo "[$node] Deployment finished"
|
||||||
|
} > "$tmpdir/$node.log" 2>&1 &
|
||||||
|
pids+=($!)
|
||||||
|
done
|
||||||
|
|
||||||
|
while [ ${"\${#pids[@]}"} -gt 0 ]; do
|
||||||
|
for i in "${"\${!pids[@]}"}"; do
|
||||||
|
local pid=${"\${pids[i]}"}
|
||||||
|
local node=${"\${nodes[i]}"}
|
||||||
|
|
||||||
|
if ! kill -0 "$pid" 2>/dev/null; then
|
||||||
|
# Process finished, display its output
|
||||||
|
if [ -f "$tmpdir/$node.log" ]; then
|
||||||
|
cat "$tmpdir/$node.log"
|
||||||
|
fi
|
||||||
|
unset 'pids[i]'
|
||||||
|
unset 'nodes[i]'
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
pids=(${"\${pids[@]}"})
|
||||||
|
nodes=(${"\${nodes[@]}"})
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "============================================"
|
||||||
|
echo "All deployments completed"
|
||||||
|
|
||||||
|
rm -rf "$tmpdir"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export -f rungcall
|
export -f rungcall
|
||||||
export -f runrebootall
|
export -f runrebootall
|
||||||
export -f getallhk
|
export -f getallhk
|
||||||
export -f genwgkey
|
export -f genwgkey
|
||||||
|
export -f deployparallel
|
||||||
|
|
||||||
echo "Welcome to Federez-LaSuite network deploy-rs shell environment!"
|
echo "Welcome to Federez-LaSuite network deploy-rs shell environment!"
|
||||||
|
echo "Available helper functions: rungcall, runrebootall, getallhk, genwgkey, deployparallel"
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue