commit 0f355453748875741c792626053482e0b551faa0 Author: colin Date: Sun Aug 11 17:25:06 2024 -0400 Add install.sh diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..340b848 --- /dev/null +++ b/install.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +set -e # Exit on any error +set +x # Disable command echoing, remove if you want to see commands + +# Variables (You can change these as needed) +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="ubuntu-cloud" +MEMORY=2048 +CORES=2 +STORAGE="local" +CLONE_ID=135 +CLONE_NAME="yoshi" + +# Function to check if a command failed +check_command() { + if [ $? -ne 0 ]; then + echo "Error: $1 failed." + exit 1 + fi +} + +# Step 1: Download Ubuntu Cloud Image +echo "Downloading Ubuntu Cloud Image..." +wget $IMG_URL -O $IMG_NAME +check_command "Downloading Ubuntu Cloud Image" + +# Step 2: Create a new virtual machine +echo "Creating a new virtual machine..." +qm create $VM_ID --memory $MEMORY --core $CORES --name $VM_NAME --net0 virtio,bridge=vmbr0 +check_command "Creating virtual machine" + +# Step 3: Import the downloaded Ubuntu disk to local storage +echo "Importing the downloaded Ubuntu disk to local storage..." +qm disk import $VM_ID $IMG_NAME $STORAGE +check_command "Importing disk to storage" + +# Step 4: Attach the new disk to the VM as a SCSI drive on the SCSI controller +echo "Attaching the new disk to the VM..." +qm set $VM_ID --scsihw virtio-scsi-pci --scsi0 $STORAGE:vm-$VM_ID-disk-0 +check_command "Attaching disk to VM" + +# Step 5: Add cloud init drive +echo "Adding cloud init drive..." +qm set $VM_ID --ide2 $STORAGE:cloudinit +check_command "Adding cloud init drive" + +# Step 6: 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 7: Add serial console +echo "Adding serial console..." +qm set $VM_ID --serial0 socket --vga serial0 +check_command "Adding serial console" + +# Step 8: Create template +echo "Creating template..." +qm template $VM_ID +check_command "Creating template" + +# Step 9: Clone template +echo "Cloning template..." +qm clone $VM_ID $CLONE_ID --name $CLONE_NAME --full +check_command "Cloning template" + +echo "Script completed successfully!"