From 759ecac56546616788f64d3a0fc83b9a4aebcfae Mon Sep 17 00:00:00 2001 From: colin Date: Sun, 11 Aug 2024 19:47:31 -0400 Subject: [PATCH] Update install.sh --- install.sh | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/install.sh b/install.sh index 9cd4340..493789e 100644 --- a/install.sh +++ b/install.sh @@ -1,18 +1,16 @@ #!/bin/bash -set -e # Exit on any error -set +x # Disable command echoing, remove if you want to see commands +set -e +set +x -# Default Variables (Can be overridden with command-line arguments) IMG_URL="https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img" IMG_NAME="noble-server-cloudimg-amd64.img" VM_ID=8000 -VM_NAME=${2:-ubuntu-cloudinit2404} # Default to "ubuntu-cloudinit2404", can be overridden by passing an argument +VM_NAME=${2:-ubuntu-cloudinit2404} MEMORY=2048 CORES=2 -STORAGE=${1:-proxmox} # Default to "proxmox", can be overridden by passing an argument +STORAGE=${1:-proxmox} -# Function to check if a command failed check_command() { if [ $? -ne 0 ]; then echo "Error: $1 failed." @@ -20,7 +18,6 @@ check_command() { fi } -# Function to delete existing VM if it exists delete_existing_vm() { if qm status $VM_ID &> /dev/null; then echo "Deleting existing VM with ID $VM_ID..." @@ -29,47 +26,41 @@ delete_existing_vm() { fi } -# Step 1: Delete existing VM if it exists delete_existing_vm -# Step 2: Download Ubuntu Cloud Image -echo "Downloading Ubuntu Cloud Image..." -wget $IMG_URL -O $IMG_NAME -check_command "Downloading Ubuntu Cloud Image" +if [ -f "$IMG_NAME" ]; then + echo "Image file already exists at: $(realpath $IMG_NAME)" + echo "Skipping download..." +else + echo "Downloading Ubuntu Cloud Image..." + wget $IMG_URL -O $IMG_NAME + check_command "Downloading Ubuntu Cloud Image" +fi -# Step 3: Create a new virtual machine echo "Creating a new virtual machine with name $VM_NAME..." qm create $VM_ID --memory $MEMORY --core $CORES --name $VM_NAME --net0 virtio,bridge=vmbr0 check_command "Creating virtual machine" -# Step 4: Import the downloaded Ubuntu disk to specified storage echo "Importing the downloaded Ubuntu disk to storage ($STORAGE)..." qm disk import $VM_ID $IMG_NAME $STORAGE check_command "Importing disk to storage" -# Step 5: Identify the unused disk and attach it to the VM as a SCSI drive on the SCSI controller echo "Attaching the imported disk to the VM..." -DISK_ID=$(qm config $VM_ID | grep "^unused" | awk -F ':' '{print $1}') -qm set $VM_ID --scsihw virtio-scsi-pci --scsi0 ${STORAGE}:vm-${VM_ID}-disk-0 -qm set $VM_ID --delete $DISK_ID +qm set $VM_ID --scsihw virtio-scsi-pci --scsi0 proxmox:8000/vm-8000-disk-0.raw check_command "Attaching disk to VM" -# Step 6: Add cloud init drive echo "Adding cloud init drive..." qm set $VM_ID --ide2 $STORAGE:cloudinit check_command "Adding cloud init drive" -# Step 7: Make the cloud init drive bootable and restrict BIOS to boot from disk only echo "Making cloud init drive bootable and restricting BIOS..." qm set $VM_ID --boot c --bootdisk scsi0 check_command "Setting boot options" -# Step 8: Add serial console echo "Adding serial console..." qm set $VM_ID --serial0 socket --vga serial0 check_command "Adding serial console" -# Step 9: Echo template creation commands for later manual execution echo "Suggested command for creating a template:" echo "qm template $VM_ID"