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