Add install.sh
This commit is contained in:
commit
0f35545374
|
@ -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!"
|
Loading…
Reference in New Issue