Add reconfiguration options for existing PBS installations
When PBS client is already installed, the script now offers: - Reconfigure connection only (server/credentials) - quick option - Full reconfiguration (all settings) - Reinstall PBS client and reconfigure - Exit without changes The connection-only reconfiguration preserves all backup settings (paths, schedules, retention) and only updates PBS server details and credentials. This is useful when switching backup servers or updating authentication tokens. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
934d6172cf
commit
8e958159d1
1 changed files with 164 additions and 13 deletions
177
pbs-client-installer.sh
Normal file → Executable file
177
pbs-client-installer.sh
Normal file → Executable file
|
|
@ -235,6 +235,90 @@ install_pbs_client() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Reconfigure connection only (PBS server and credentials)
|
||||||
|
reconfigure_connection() {
|
||||||
|
log "Reconfiguring PBS server connection..."
|
||||||
|
echo
|
||||||
|
echo "======================================"
|
||||||
|
echo " PBS Server Connection Setup"
|
||||||
|
echo "======================================"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# PBS Server details
|
||||||
|
PBS_SERVER=$(prompt "Enter PBS server IP/hostname" "192.168.1.181")
|
||||||
|
PBS_PORT=$(prompt "Enter PBS server port" "8007")
|
||||||
|
PBS_DATASTORE=$(prompt "Enter datastore name" "backups")
|
||||||
|
|
||||||
|
echo
|
||||||
|
info "Authentication Method:"
|
||||||
|
echo " 1) Username + Password"
|
||||||
|
echo " 2) API Token (recommended for automation)"
|
||||||
|
AUTH_METHOD=$(prompt "Select authentication method [1/2]" "2")
|
||||||
|
|
||||||
|
if [ "$AUTH_METHOD" = "1" ]; then
|
||||||
|
PBS_USERNAME=$(prompt "Enter username" "root")
|
||||||
|
PBS_REALM=$(prompt "Enter realm" "pam")
|
||||||
|
PBS_PASSWORD=$(prompt_password "Enter password")
|
||||||
|
PBS_REPOSITORY="${PBS_USERNAME}@${PBS_REALM}@${PBS_SERVER}:${PBS_PORT}:${PBS_DATASTORE}"
|
||||||
|
else
|
||||||
|
PBS_USERNAME=$(prompt "Enter username" "backup")
|
||||||
|
PBS_REALM=$(prompt "Enter realm" "pbs")
|
||||||
|
PBS_TOKEN_NAME=$(prompt "Enter token name" "backup-token")
|
||||||
|
PBS_TOKEN_SECRET=$(prompt_password "Enter token secret")
|
||||||
|
PBS_REPOSITORY="${PBS_USERNAME}@${PBS_REALM}!${PBS_TOKEN_NAME}@${PBS_SERVER}:${PBS_PORT}:${PBS_DATASTORE}"
|
||||||
|
PBS_PASSWORD="$PBS_TOKEN_SECRET"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test the new connection
|
||||||
|
if ! test_connection; then
|
||||||
|
error "Connection test failed with new credentials"
|
||||||
|
RETRY=$(prompt "Try again? (yes/no)" "yes")
|
||||||
|
if [[ "$RETRY" == "yes" ]]; then
|
||||||
|
reconfigure_connection
|
||||||
|
return
|
||||||
|
else
|
||||||
|
error "Cannot proceed without successful connection"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load existing configuration and update only connection details
|
||||||
|
if [ -f "$CONFIG_DIR/config" ]; then
|
||||||
|
log "Loading existing backup configuration..."
|
||||||
|
source "$CONFIG_DIR/config"
|
||||||
|
else
|
||||||
|
error "No existing configuration found. Please run full configuration."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update config file with new connection details
|
||||||
|
log "Updating configuration file..."
|
||||||
|
cat > "$CONFIG_DIR/config" <<EOF
|
||||||
|
# PBS Client Configuration
|
||||||
|
PBS_REPOSITORY="${PBS_REPOSITORY}"
|
||||||
|
PBS_PASSWORD="${PBS_PASSWORD}"
|
||||||
|
BACKUP_TYPE="${BACKUP_TYPE}"
|
||||||
|
BACKUP_PATHS="${BACKUP_PATHS}"
|
||||||
|
EXCLUDE_PATTERNS="${EXCLUDE_PATTERNS}"
|
||||||
|
BLOCK_DEVICE="${BLOCK_DEVICE}"
|
||||||
|
KEEP_LAST=${KEEP_LAST}
|
||||||
|
KEEP_DAILY=${KEEP_DAILY}
|
||||||
|
KEEP_WEEKLY=${KEEP_WEEKLY}
|
||||||
|
KEEP_MONTHLY=${KEEP_MONTHLY}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod 600 "$CONFIG_DIR/config"
|
||||||
|
|
||||||
|
log "Connection configuration updated successfully!"
|
||||||
|
echo
|
||||||
|
info "Updated Connection:"
|
||||||
|
echo " PBS Server: ${PBS_SERVER}:${PBS_PORT}"
|
||||||
|
echo " Datastore: ${PBS_DATASTORE}"
|
||||||
|
echo " Repository: ${PBS_REPOSITORY}"
|
||||||
|
echo
|
||||||
|
info "All other backup settings remain unchanged."
|
||||||
|
}
|
||||||
|
|
||||||
# Interactive configuration
|
# Interactive configuration
|
||||||
interactive_config() {
|
interactive_config() {
|
||||||
log "Starting interactive configuration..."
|
log "Starting interactive configuration..."
|
||||||
|
|
@ -243,7 +327,7 @@ interactive_config() {
|
||||||
echo " PBS Client Configuration"
|
echo " PBS Client Configuration"
|
||||||
echo "======================================"
|
echo "======================================"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# PBS Server details
|
# PBS Server details
|
||||||
PBS_SERVER=$(prompt "Enter PBS server IP/hostname" "192.168.1.181")
|
PBS_SERVER=$(prompt "Enter PBS server IP/hostname" "192.168.1.181")
|
||||||
PBS_PORT=$(prompt "Enter PBS server port" "8007")
|
PBS_PORT=$(prompt "Enter PBS server port" "8007")
|
||||||
|
|
@ -714,41 +798,108 @@ main() {
|
||||||
|
|
||||||
# Check root
|
# Check root
|
||||||
check_root
|
check_root
|
||||||
|
|
||||||
# Detect distribution
|
# Detect distribution
|
||||||
detect_distro
|
detect_distro
|
||||||
|
|
||||||
# Check if PBS client is already installed
|
# Check if PBS client is already installed
|
||||||
if command -v proxmox-backup-client &> /dev/null; then
|
if command -v proxmox-backup-client &> /dev/null; then
|
||||||
warn "Proxmox Backup Client is already installed"
|
warn "Proxmox Backup Client is already installed"
|
||||||
REINSTALL=$(prompt "Do you want to reinstall? (yes/no)" "no")
|
|
||||||
if [[ "$REINSTALL" != "yes" ]]; then
|
# Check if configuration exists
|
||||||
info "Skipping installation, proceeding to configuration..."
|
if [ -f "$CONFIG_DIR/config" ]; then
|
||||||
|
info "Existing configuration detected"
|
||||||
|
echo
|
||||||
|
echo "What would you like to do?"
|
||||||
|
echo " 1) Reconfigure connection only (server/credentials)"
|
||||||
|
echo " 2) Full reconfiguration (all settings)"
|
||||||
|
echo " 3) Reinstall PBS client and reconfigure"
|
||||||
|
echo " 4) Exit"
|
||||||
|
ACTION=$(prompt "Select option [1/2/3/4]" "1")
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
1)
|
||||||
|
info "Reconfiguring connection only..."
|
||||||
|
reconfigure_connection
|
||||||
|
# Skip most of the setup, just restart services
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl restart pbs-backup.timer
|
||||||
|
log "Configuration updated and services restarted!"
|
||||||
|
echo
|
||||||
|
info "Your backup schedule and settings remain unchanged."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
info "Proceeding with full reconfiguration..."
|
||||||
|
# Continue to interactive_config below
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
info "Reinstalling PBS client..."
|
||||||
|
install_pbs_client
|
||||||
|
# Continue to interactive_config below
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
info "Exiting without changes"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "Invalid option"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
install_pbs_client
|
# PBS client installed but no config
|
||||||
|
info "No existing configuration found"
|
||||||
|
echo
|
||||||
|
echo "What would you like to do?"
|
||||||
|
echo " 1) Configure PBS client"
|
||||||
|
echo " 2) Reinstall and configure"
|
||||||
|
echo " 3) Exit"
|
||||||
|
ACTION=$(prompt "Select option [1/2/3]" "1")
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
1)
|
||||||
|
info "Proceeding with configuration..."
|
||||||
|
# Continue to interactive_config below
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
info "Reinstalling PBS client..."
|
||||||
|
install_pbs_client
|
||||||
|
# Continue to interactive_config below
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
info "Exiting without changes"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error "Invalid option"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# PBS client not installed
|
||||||
install_pbs_client
|
install_pbs_client
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Interactive configuration
|
# Interactive configuration
|
||||||
interactive_config
|
interactive_config
|
||||||
|
|
||||||
# Create encryption key
|
# Create encryption key
|
||||||
create_encryption_key
|
create_encryption_key
|
||||||
|
|
||||||
# Test connection
|
# Test connection
|
||||||
if ! test_connection; then
|
if ! test_connection; then
|
||||||
error "Cannot proceed without successful connection to PBS"
|
error "Cannot proceed without successful connection to PBS"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create systemd service
|
# Create systemd service
|
||||||
create_systemd_service
|
create_systemd_service
|
||||||
|
|
||||||
# Offer to run backup now
|
# Offer to run backup now
|
||||||
run_backup_now
|
run_backup_now
|
||||||
|
|
||||||
# Show summary
|
# Show summary
|
||||||
show_summary
|
show_summary
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue