Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
95 lines
2.5 KiB
Bash
Executable File
95 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
source ~/.bashrc
|
|
# Create Proxmox Cloud-Init Template from Ubuntu Cloud Image
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
log_info() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
log_step() {
|
|
echo -e "${BLUE}[STEP]${NC} $1"
|
|
}
|
|
|
|
# Load environment variables
|
|
if [ -f .env ]; then
|
|
set -a
|
|
source <(grep -v '^#' .env | grep -v '^$' | sed 's/#.*$//' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | grep '=')
|
|
set +a
|
|
fi
|
|
|
|
PVE_USERNAME="${PVE_USERNAME:-root@pam}"
|
|
PVE_PASSWORD="${PVE_ROOT_PASS:-}"
|
|
PROXMOX_URL="${PROXMOX_URL:-https://192.168.1.206:8006}"
|
|
PROXMOX_NODE="${PROXMOX_NODE:-pve}"
|
|
STORAGE="${STORAGE:-local-lvm}"
|
|
|
|
CLOUD_IMAGE="${1:-./downloads/ubuntu-24.04-server-cloudimg-amd64.img}"
|
|
TEMPLATE_NAME="${2:-ubuntu-24.04-cloudinit}"
|
|
TEMPLATE_ID="${3:-9000}"
|
|
|
|
main() {
|
|
echo "========================================="
|
|
echo "Create Proxmox Cloud-Init Template"
|
|
echo "========================================="
|
|
echo ""
|
|
|
|
if [ ! -f "$CLOUD_IMAGE" ]; then
|
|
log_error "Cloud image not found: $CLOUD_IMAGE"
|
|
log_info "Download it first: ./scripts/download-ubuntu-cloud-image.sh"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$PVE_PASSWORD" ]; then
|
|
log_error "PVE_ROOT_PASS not set in .env"
|
|
exit 1
|
|
fi
|
|
|
|
log_step "Creating template from: $CLOUD_IMAGE"
|
|
log_info "Template name: $TEMPLATE_NAME"
|
|
log_info "Template ID: $TEMPLATE_ID"
|
|
log_info "Storage: $STORAGE"
|
|
echo ""
|
|
|
|
log_info "This script provides instructions for manual template creation."
|
|
log_info "Proxmox Web UI method is more reliable for template creation."
|
|
echo ""
|
|
|
|
log_step "Manual Steps (Recommended):"
|
|
echo ""
|
|
echo "1. Upload Cloud Image to Proxmox:"
|
|
echo " - Proxmox Web UI → Datacenter → $PROXMOX_NODE → Storage"
|
|
echo " - Select storage → Content → Upload"
|
|
echo " - Upload: $CLOUD_IMAGE"
|
|
echo ""
|
|
echo "2. Create VM from Cloud Image:"
|
|
echo " - Create VM (ID: $TEMPLATE_ID)"
|
|
echo " - Import disk from uploaded image"
|
|
echo " - Configure Cloud-Init settings"
|
|
echo ""
|
|
echo "3. Convert to Template:"
|
|
echo " - Right-click VM → Convert to Template"
|
|
echo ""
|
|
echo "4. Use Template:"
|
|
echo " - Clone template to create new VMs"
|
|
echo " - Configure Cloud-Init on clone"
|
|
echo ""
|
|
|
|
log_info "See: docs/proxmox-ubuntu-images.md for detailed instructions"
|
|
}
|
|
|
|
main "$@"
|
|
|