125 lines
3.3 KiB
Bash
Executable File
125 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Helper functions for Calypso installer
|
|
#
|
|
|
|
# Check prerequisites
|
|
check_prerequisites() {
|
|
log_info "Checking prerequisites..."
|
|
|
|
# Check network connectivity
|
|
if ! ping -c 1 -W 2 8.8.8.8 &>/dev/null; then
|
|
log_warn "Network connectivity check failed. Some installations may fail."
|
|
else
|
|
log_info "✓ Network connectivity OK"
|
|
fi
|
|
|
|
# Check disk space (need at least 10GB free)
|
|
AVAILABLE_SPACE=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//')
|
|
if [[ $AVAILABLE_SPACE -lt 10 ]]; then
|
|
log_error "Insufficient disk space. Need at least 10GB, have ${AVAILABLE_SPACE}GB"
|
|
exit 1
|
|
else
|
|
log_info "✓ Disk space OK (${AVAILABLE_SPACE}GB available)"
|
|
fi
|
|
|
|
# Check if already installed
|
|
if [[ -d "$INSTALL_PREFIX/current" ]]; then
|
|
log_warn "Calypso appears to be already installed at $INSTALL_PREFIX"
|
|
read -p "Continue anyway? (y/N) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
log_info "✓ Prerequisites check complete"
|
|
}
|
|
|
|
# Generate random string
|
|
generate_random_string() {
|
|
local length=${1:-32}
|
|
openssl rand -hex $((length / 2)) | head -c $length
|
|
}
|
|
|
|
# Generate JWT secret
|
|
generate_jwt_secret() {
|
|
generate_random_string 64
|
|
}
|
|
|
|
# Generate database password
|
|
generate_db_password() {
|
|
generate_random_string 32
|
|
}
|
|
|
|
# Wait for service
|
|
wait_for_service() {
|
|
local service=$1
|
|
local max_wait=${2:-30}
|
|
local count=0
|
|
|
|
while ! systemctl is-active --quiet "$service" && [[ $count -lt $max_wait ]]; do
|
|
sleep 1
|
|
((count++))
|
|
done
|
|
|
|
if systemctl is-active --quiet "$service"; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Check command exists
|
|
command_exists() {
|
|
command -v "$1" &> /dev/null
|
|
}
|
|
|
|
# Get installed version
|
|
get_installed_version() {
|
|
local command=$1
|
|
if command_exists "$command"; then
|
|
case $command in
|
|
go)
|
|
go version | awk '{print $3}' | sed 's/go//'
|
|
;;
|
|
node)
|
|
node --version | sed 's/v//'
|
|
;;
|
|
psql)
|
|
psql --version | awk '{print $3}'
|
|
;;
|
|
*)
|
|
"$command" --version 2>/dev/null | head -1
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# Print installation summary
|
|
print_installation_summary() {
|
|
log_info ""
|
|
log_info "=========================================="
|
|
log_info "Installation Summary"
|
|
log_info "=========================================="
|
|
log_info ""
|
|
log_info "Installation Paths:"
|
|
log_info " Binaries: $INSTALL_PREFIX/releases/$CALYPSO_VERSION"
|
|
log_info " Configuration: $CONFIG_DIR"
|
|
log_info " Data: $DATA_DIR"
|
|
log_info " Logs: $LOG_DIR"
|
|
log_info ""
|
|
log_info "Services:"
|
|
log_info " calypso-api: $(systemctl is-enabled calypso-api 2>/dev/null || echo 'not enabled')"
|
|
log_info ""
|
|
log_info "Default Credentials:"
|
|
log_info " Username: admin"
|
|
log_info " Password: $(cat /tmp/calypso_admin_password 2>/dev/null || echo 'Check installation log')"
|
|
log_info ""
|
|
log_info "Access:"
|
|
log_info " Web UI: http://$(hostname -I | awk '{print $1}'):3000"
|
|
log_info " API: http://$(hostname -I | awk '{print $1}'):8080"
|
|
log_info ""
|
|
}
|
|
|