- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
111 lines
3.3 KiB
Bash
Executable File
111 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# download-ubuntu-image.sh
|
|
# Downloads Ubuntu 22.04 cloud image to Proxmox storage
|
|
|
|
set -euo pipefail
|
|
|
|
# Load environment variables
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
if [ -f "${SCRIPT_DIR}/../.env" ]; then
|
|
set -a
|
|
source <(grep -v '^#' "${SCRIPT_DIR}/../.env" | grep -v '^$' | sed 's/^/export /')
|
|
set +a
|
|
fi
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
STORAGE="${STORAGE:-local}"
|
|
NODE1_IP="192.168.11.10"
|
|
NODE2_IP="192.168.11.11"
|
|
IMAGE_NAME="ubuntu-22.04-server-cloudimg-amd64.img"
|
|
IMAGE_URL="https://cloud-images.ubuntu.com/releases/22.04/release/${IMAGE_NAME}"
|
|
|
|
log() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}[ERROR]${NC} $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
download_image() {
|
|
local node_ip=$1
|
|
local node_name=$2
|
|
local token=$3
|
|
|
|
log "Downloading Ubuntu 22.04 cloud image for ${node_name}..."
|
|
|
|
# Check if image already exists
|
|
local existing=$(curl -k -s -H "Authorization: PVEAPIToken ${token}" \
|
|
"https://${node_ip}:8006/api2/json/storage/${STORAGE}/content" 2>/dev/null | \
|
|
jq -r ".data[]? | select(.volid | contains(\"${IMAGE_NAME}\")) | .volid")
|
|
|
|
if [ -n "$existing" ]; then
|
|
warn "Image already exists: ${existing}"
|
|
return 0
|
|
fi
|
|
|
|
info "Image not found. Download instructions:"
|
|
echo ""
|
|
echo "Option 1: Download via SSH (Recommended):"
|
|
echo " ssh root@${node_ip}"
|
|
echo " wget ${IMAGE_URL}"
|
|
echo " mv ${IMAGE_NAME} /var/lib/vz/template/iso/"
|
|
echo ""
|
|
echo "Option 2: Download via Proxmox Web UI:"
|
|
echo " 1. Log in to https://${node_ip}:8006"
|
|
echo " 2. Go to: Datacenter → Storage → ${STORAGE} → Content"
|
|
echo " 3. Click 'Upload' → Select file → Upload"
|
|
echo ""
|
|
echo "Option 3: Use pveam (if template available):"
|
|
echo " ssh root@${node_ip}"
|
|
echo " pveam available | grep ubuntu-22.04"
|
|
echo " pveam download ${STORAGE} ubuntu-22.04-standard_22.04-1_amd64.tar.gz"
|
|
echo ""
|
|
}
|
|
|
|
main() {
|
|
echo ""
|
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
echo "║ Ubuntu Image Download Helper ║"
|
|
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
info "Target Image: ${IMAGE_NAME}"
|
|
info "Storage: ${STORAGE}"
|
|
echo ""
|
|
|
|
if [ -z "${PROXMOX_TOKEN_ML110_01:-}" ] || [ -z "${PROXMOX_TOKEN_R630_01:-}" ]; then
|
|
warn "Proxmox API tokens not found in .env file"
|
|
warn "Providing manual download instructions instead"
|
|
echo ""
|
|
else
|
|
download_image "${NODE1_IP}" "ML110-01" "${PROXMOX_TOKEN_ML110_01}"
|
|
download_image "${NODE2_IP}" "R630-01" "${PROXMOX_TOKEN_R630_01}"
|
|
fi
|
|
|
|
echo ""
|
|
info "Image URL: ${IMAGE_URL}"
|
|
info "File Size: ~600MB"
|
|
echo ""
|
|
log "Download complete or instructions provided"
|
|
echo ""
|
|
}
|
|
|
|
main "$@"
|
|
|