updates for deployment tool
This commit is contained in:
parent
9f7c2640b5
commit
5332351a06
4 changed files with 41 additions and 106 deletions
|
@ -102,9 +102,9 @@ writeShellScriptBin "lab" ''
|
|||
local dry_run="''${2:-false}"
|
||||
|
||||
log "Using deploy-rs for $machine deployment"
|
||||
|
||||
|
||||
cd "$HOMELAB_ROOT"
|
||||
|
||||
|
||||
if [[ "$dry_run" == "true" ]]; then
|
||||
log "Running dry-run deployment..."
|
||||
if ! nix run github:serokell/deploy-rs -- ".#$machine" --dry-activate; then
|
||||
|
@ -126,20 +126,20 @@ writeShellScriptBin "lab" ''
|
|||
update_flake() {
|
||||
log "Updating flake inputs..."
|
||||
cd "$HOMELAB_ROOT"
|
||||
|
||||
|
||||
if ! nix flake update; then
|
||||
error "Failed to update flake inputs"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
log "Checking updated flake configuration..."
|
||||
if ! nix flake check; then
|
||||
error "Flake check failed after update"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
success "Flake inputs updated successfully"
|
||||
|
||||
|
||||
# Show what changed
|
||||
log "Flake lock changes:"
|
||||
git diff --no-index /dev/null flake.lock | grep "+" | head -10 || true
|
||||
|
@ -149,20 +149,20 @@ writeShellScriptBin "lab" ''
|
|||
hybrid_update() {
|
||||
local target="''${1:-all}"
|
||||
local dry_run="''${2:-false}"
|
||||
|
||||
|
||||
log "Starting hybrid update process (target: $target, dry-run: $dry_run)"
|
||||
|
||||
|
||||
# Step 1: Update flake inputs
|
||||
if ! update_flake; then
|
||||
error "Failed to update flake - aborting hybrid update"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
# Step 2: Deploy with deploy-rs
|
||||
if [[ "$target" == "all" ]]; then
|
||||
local machines=("sleeper-service" "grey-area" "reverse-proxy" "congenital-optimist")
|
||||
local failed_machines=()
|
||||
|
||||
|
||||
for machine in "''${machines[@]}"; do
|
||||
log "Deploying updated configuration to $machine..."
|
||||
if deploy_rs_machine "$machine" "$dry_run"; then
|
||||
|
@ -173,7 +173,7 @@ writeShellScriptBin "lab" ''
|
|||
fi
|
||||
echo ""
|
||||
done
|
||||
|
||||
|
||||
if [[ ''${#failed_machines[@]} -eq 0 ]]; then
|
||||
success "All machines updated successfully with hybrid approach!"
|
||||
else
|
||||
|
@ -216,31 +216,22 @@ writeShellScriptBin "lab" ''
|
|||
show_status() {
|
||||
log "Home-lab infrastructure status:"
|
||||
|
||||
# Check if -v (verbose) flag is passed for deploy-rs details
|
||||
local verbose=0
|
||||
local show_deploy_rs=0
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
"-v"|"--verbose") verbose=1 ;;
|
||||
"--deploy-rs") show_deploy_rs=1 ;;
|
||||
"-vd"|"--verbose-deploy-rs") verbose=1; show_deploy_rs=1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check congenital-optimist (local)
|
||||
if /run/current-system/sw/bin/systemctl is-active --quiet tailscaled; then
|
||||
success " congenital-optimist: ✓ Online (local)"
|
||||
if [[ $show_deploy_rs -eq 1 ]]; then
|
||||
show_machine_deploy_info "congenital-optimist" "local"
|
||||
fi
|
||||
else
|
||||
warn " congenital-optimist: ⚠ Tailscale inactive"
|
||||
fi
|
||||
|
||||
# Check if -v (verbose) flag is passed
|
||||
local verbose=0
|
||||
if [[ "''${1:-}" == "-v" ]]; then
|
||||
verbose=1
|
||||
fi
|
||||
|
||||
# Check remote machines
|
||||
for machine in sleeper-service grey-area reverse-proxy; do
|
||||
local ssh_user="sma" # Using sma as the admin user for remote machines
|
||||
local connection_type=""
|
||||
|
||||
# Test SSH connectivity with debug info if in verbose mode
|
||||
if [[ $verbose -eq 1 ]]; then
|
||||
|
@ -262,10 +253,8 @@ writeShellScriptBin "lab" ''
|
|||
# Use the specific Tailscale hostname for reverse-proxy
|
||||
if ${openssh}/bin/ssh -o ConnectTimeout=5 -o BatchMode=yes "$ssh_user@reverse-proxy.tail807ea.ts.net" "echo OK" >/dev/null 2>&1; then
|
||||
success " $machine: ✓ Online (Tailscale)"
|
||||
connection_type="reverse-proxy.tail807ea.ts.net"
|
||||
elif ${openssh}/bin/ssh -o ConnectTimeout=2 -o BatchMode=yes "$ssh_user@$machine" "echo OK" >/dev/null 2>&1; then
|
||||
success " $machine: ✓ Online (LAN)"
|
||||
connection_type="$machine"
|
||||
else
|
||||
warn " $machine: ⚠ Unreachable"
|
||||
if [[ $verbose -eq 1 ]]; then
|
||||
|
@ -277,70 +266,14 @@ writeShellScriptBin "lab" ''
|
|||
else
|
||||
if ${openssh}/bin/ssh -o ConnectTimeout=2 -o BatchMode=yes "$ssh_user@$machine" "echo OK" >/dev/null 2>&1; then
|
||||
success " $machine: ✓ Online (LAN)"
|
||||
connection_type="$machine"
|
||||
# Try with Tailscale hostname as fallback
|
||||
elif ${openssh}/bin/ssh -o ConnectTimeout=3 -o BatchMode=yes "$ssh_user@$machine.tailnet" "echo OK" >/dev/null 2>&1; then
|
||||
success " $machine: ✓ Online (Tailscale)"
|
||||
connection_type="$machine.tailnet"
|
||||
else
|
||||
warn " $machine: ⚠ Unreachable"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Show deploy-rs information if requested and machine is reachable
|
||||
if [[ $show_deploy_rs -eq 1 && -n "$connection_type" ]]; then
|
||||
show_machine_deploy_info "$machine" "$connection_type"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $show_deploy_rs -eq 1 ]]; then
|
||||
echo ""
|
||||
log "💡 Use 'lab status --deploy-rs' to see deployment details"
|
||||
log "💡 Use 'lab status -vd' for verbose deploy-rs information"
|
||||
fi
|
||||
}
|
||||
|
||||
# Show deploy-rs deployment information for a machine
|
||||
show_machine_deploy_info() {
|
||||
local machine="$1"
|
||||
local connection="$2"
|
||||
|
||||
if [[ "$connection" == "local" ]]; then
|
||||
# Local machine - get info directly
|
||||
local current_gen=$(readlink /nix/var/nix/profiles/system | sed 's/.*system-\([0-9]*\)-link/\1/')
|
||||
local system_closure=$(readlink -f /run/current-system)
|
||||
local build_date=$(stat -c %y "$system_closure" 2>/dev/null | cut -d' ' -f1 2>/dev/null || echo "unknown")
|
||||
|
||||
echo " 📦 Generation: $current_gen"
|
||||
echo " 📅 Build Date: $build_date"
|
||||
echo " 📍 Store Path: $system_closure"
|
||||
else
|
||||
# Remote machine - get info via SSH
|
||||
local ssh_user="sma"
|
||||
local ssh_host="$connection"
|
||||
|
||||
local remote_info=$(${openssh}/bin/ssh -o ConnectTimeout=3 -o BatchMode=yes "$ssh_user@$ssh_host" "
|
||||
current_gen=\$(readlink /nix/var/nix/profiles/system 2>/dev/null | sed 's/.*system-\([0-9]*\)-link/\1/' 2>/dev/null || echo 'unknown')
|
||||
system_closure=\$(readlink -f /run/current-system 2>/dev/null || echo 'unknown')
|
||||
build_date=\$(stat -c %y \$system_closure 2>/dev/null | cut -d' ' -f1 2>/dev/null || echo 'unknown')
|
||||
uptime=\$(uptime -s 2>/dev/null || echo 'unknown')
|
||||
echo \"gen:\$current_gen|path:\$system_closure|date:\$build_date|uptime:\$uptime\"
|
||||
" 2>/dev/null)
|
||||
|
||||
if [[ -n "$remote_info" ]]; then
|
||||
local gen=$(echo "$remote_info" | cut -d'|' -f1 | cut -d':' -f2)
|
||||
local path=$(echo "$remote_info" | cut -d'|' -f2 | cut -d':' -f2)
|
||||
local date=$(echo "$remote_info" | cut -d'|' -f3 | cut -d':' -f2)
|
||||
local uptime=$(echo "$remote_info" | cut -d'|' -f4 | cut -d':' -f2)
|
||||
|
||||
echo " 📦 Generation: $gen"
|
||||
echo " 📅 Build Date: $date"
|
||||
echo " ⏰ Boot Time: $uptime"
|
||||
echo " 📍 Store Path: $(basename "$path")"
|
||||
else
|
||||
echo " ⚠️ Unable to retrieve deployment info"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Main command handling
|
||||
|
@ -373,7 +306,7 @@ writeShellScriptBin "lab" ''
|
|||
|
||||
machine="$2"
|
||||
dry_run="false"
|
||||
|
||||
|
||||
if [[ "''${3:-}" == "--dry-run" ]]; then
|
||||
dry_run="true"
|
||||
fi
|
||||
|
@ -388,7 +321,7 @@ writeShellScriptBin "lab" ''
|
|||
"hybrid-update")
|
||||
target="''${2:-all}"
|
||||
dry_run="false"
|
||||
|
||||
|
||||
if [[ "''${3:-}" == "--dry-run" ]]; then
|
||||
dry_run="true"
|
||||
fi
|
||||
|
@ -397,8 +330,7 @@ writeShellScriptBin "lab" ''
|
|||
;;
|
||||
|
||||
"status")
|
||||
shift # Remove "status" from arguments
|
||||
show_status "$@" # Pass all remaining arguments to show_status
|
||||
show_status
|
||||
;;
|
||||
|
||||
"update")
|
||||
|
@ -429,9 +361,7 @@ writeShellScriptBin "lab" ''
|
|||
echo " hybrid-update [target] [opts] - Update flake + deploy with deploy-rs"
|
||||
echo " Target: machine name or 'all' (default)"
|
||||
echo " Options: --dry-run"
|
||||
echo " status [options] - Check infrastructure connectivity"
|
||||
echo " Options: -v (verbose), --deploy-rs (show deployment info)"
|
||||
echo " -vd (verbose + deploy-rs info)"
|
||||
echo " status - Check infrastructure connectivity"
|
||||
echo ""
|
||||
echo "Deployment Methods:"
|
||||
echo " Legacy (SSH + rsync): Reliable, tested, slower"
|
||||
|
@ -459,8 +389,6 @@ writeShellScriptBin "lab" ''
|
|||
echo ""
|
||||
echo " # Status and monitoring"
|
||||
echo " lab status # Check all machines"
|
||||
echo " lab status --deploy-rs # Show deployment details"
|
||||
echo " lab status -vd # Verbose with deploy-rs info"
|
||||
echo ""
|
||||
echo " # Ollama AI tools"
|
||||
echo " ollama-cli status # Check Ollama service status"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue