Files
symclaw/scripts/pi-deploy.sh
T

71 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Configuration
CONTROL_NODE="${SYMCLAW_CONTROL:-pi5.tail}"
WORKER_NODES="${SYMCLAW_WORKERS:-pi4-1.tail pi4-2.tail pi4-3.tail}"
BINARY="target/aarch64-unknown-linux-gnu/release/symclaw-skill"
CLI_BINARY="target/aarch64-unknown-linux-gnu/release/symclaw"
REMOTE_DIR="/opt/symclaw"
echo "=== SymClaw Pi Cluster Deployment ==="
echo "Control: $CONTROL_NODE"
echo "Workers: $WORKER_NODES"
echo ""
# Cross-compile for aarch64
echo "Cross-compiling for aarch64..."
cross build --release --target aarch64-unknown-linux-gnu -p symclaw-skill -p symclaw-cli
# Verify binaries exist
for bin in "$BINARY" "$CLI_BINARY"; do
if [[ ! -f "$bin" ]]; then
echo "ERROR: Binary not found: $bin"
exit 1
fi
done
# Deploy to each node
for node in $CONTROL_NODE $WORKER_NODES; do
echo "Deploying to $node..."
ssh "$node" "sudo mkdir -p $REMOTE_DIR && sudo systemctl stop symclaw 2>/dev/null || true"
scp "$BINARY" "$node:/tmp/symclaw-skill"
scp "$CLI_BINARY" "$node:/tmp/symclaw"
ssh "$node" "sudo mv /tmp/symclaw-skill /tmp/symclaw $REMOTE_DIR/ && sudo chmod +x $REMOTE_DIR/*"
echo " ✓ $node"
done
# Deploy systemd service to control node
echo "Installing systemd service on $CONTROL_NODE..."
ssh "$CONTROL_NODE" "sudo tee /etc/systemd/system/symclaw.service > /dev/null" << 'EOF'
[Unit]
Description=SymClaw Symbolic Mathematics Engine
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/opt/symclaw/symclaw-skill
Restart=on-failure
RestartSec=5
Environment=RUST_LOG=info
DynamicUser=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/symclaw
NoNewPrivileges=yes
PrivateTmp=yes
[Install]
WantedBy=multi-user.target
EOF
# Start service on control node
ssh "$CONTROL_NODE" "sudo systemctl daemon-reload && sudo systemctl enable --now symclaw"
echo ""
echo "=== Deployment complete ==="
echo "Control: $CONTROL_NODE"
echo "Workers: $WORKER_NODES"
echo "Check status: ssh $CONTROL_NODE sudo systemctl status symclaw"