2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#!/usr/bin/env bash
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 12:13:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Copyright (c) 2021-2024 tteck  
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Author: tteck (tteckster)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# License: MIT  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# https://github.com/tteck/Proxmox/raw/main/LICENSE  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  header_info {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  clear
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cat <<"EOF" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   __  ____                __           ___  ___    ____  __ __     _    ____  ___
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  / / / / /_  __  ______  / /___  __   | __ \| __ \   / __ \/  // /    |  |   / /  | /  /
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 / / / / __ \/  / / / __ \/  __/ / / /   __/ /__/ / / / / / // /_    |  |  / / /| _/ /
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/ /_/ / /_/ / /_/ / / / / /_/ /_/ /   / __// __/_/ /_/ /__  __/    |  | / / /  / /
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								\_ ___/_.___/\_ _,_/_/ /_/\_ _/\_ _,_/   /____/____( _) ____/  /_/       | ___/_/  /_/ 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								header_info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								echo  -e "\n Loading..."  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GEN_MAC = 02:$( openssl rand -hex 5  |  awk '{print toupper($0)}'  |  sed 's/\(..\)/\1:/g; s/.$//' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								NEXTID = $( pvesh get /cluster/nextid)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								YW = $( echo  "\033[33m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BL = $( echo  "\033[36m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								HA = $( echo  "\033[1;34m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								RD = $( echo  "\033[01;31m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BGN = $( echo  "\033[4;92m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								GN = $( echo  "\033[1;92m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								DGN = $( echo  "\033[32m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CL = $( echo  "\033[m" )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BFR = "\\r\\033[K"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								HOLD = "-"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CM = " ${ GN } ✓ ${ CL } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CROSS = " ${ RD } ✗ ${ CL } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								THIN = "discard=on,ssd=1,"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set  -e 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								trap  'error_handler $LINENO "$BASH_COMMAND"'  ERR 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								trap  cleanup EXIT 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  error_handler( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  exit_code = " $? " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  line_number = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  command = " $2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  error_message = " ${ RD } [ERROR] ${ CL }  in line  ${ RD } $line_number ${ CL } : exit code  ${ RD } $exit_code ${ CL } : while executing command  ${ YW } $command ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " \n $error_message \n " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cleanup_vmid
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  cleanup_vmid( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  qm status $VMID  & >/dev/null;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    qm stop $VMID  & >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    qm destroy $VMID  & >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  cleanup( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  popd  >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  rm -rf $TEMP_DIR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TEMP_DIR = $( mktemp -d)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pushd  $TEMP_DIR  >/dev/null 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  whiptail --backtitle "Proxmox VE Helper Scripts"  --title "Ubuntu 22.04 VM"  --yesno "This will create a New Ubuntu 22.04 VM. Proceed?"  10  58;  then  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  :
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								else  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  header_info &&  echo  -e "⚠ User exited script \n"  &&  exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  msg_info( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  msg = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -ne "   ${ HOLD }   ${ YW } ${ msg } ... " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  msg_ok( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  msg = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ BFR }   ${ CM }   ${ GN } ${ msg } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  msg_error( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  local  msg = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ BFR }   ${ CROSS }   ${ RD } ${ msg } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  check_root( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [ [  " $( id -u) "  -ne 0  ||  $( ps -o comm =  -p $PPID )  = =  "sudo"  ] ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    clear
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    msg_error "Please run this script as root." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e "\nExiting..." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  pve_check( )  {  
						 
					
						
							
								
									
										
										
										
											2024-06-30 10:18:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ! pveversion |  grep -Eq "pve-manager/8.[1-3]" ;  then 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    msg_error "This version of Proxmox Virtual Environment is not supported" 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-30 10:18:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    echo  -e "Requires Proxmox Virtual Environment Version 8.1 or later." 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    echo  -e "Exiting..." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-30 10:18:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								fi  
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  arch_check( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [  " $( dpkg --print-architecture) "  !=  "amd64"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    msg_error "This script will not work with PiMox! \n" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e "Exiting..." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  ssh_check( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  command  -v pveversion >/dev/null 2>& 1;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -n " ${ SSH_CLIENT : +x } "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  whiptail --backtitle "Proxmox VE Helper Scripts"  --defaultno --title "SSH DETECTED"  --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?"  10  62;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  "you've been warned" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        clear
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  exit-script( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  clear
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e "⚠  User exited script \n" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  default_settings( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  VMID = " $NEXTID " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FORMAT = ",efitype=4m" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  MACHINE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_CACHE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  HN = "ubuntu" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  CPU_TYPE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  CORE_COUNT = "2" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  RAM_SIZE = "2048" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BRG = "vmbr0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  MAC = " $GEN_MAC " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  VLAN = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  MTU = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  START_VM = "no" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Virtual Machine ID:  ${ BGN } ${ VMID } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Machine Type:  ${ BGN } i440fx ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Disk Cache:  ${ BGN } None ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Hostname:  ${ BGN } ${ HN } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using CPU Model:  ${ BGN } KVM64 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Allocated Cores:  ${ BGN } ${ CORE_COUNT } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Allocated RAM:  ${ BGN } ${ RAM_SIZE } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Bridge:  ${ BGN } ${ BRG } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using MAC Address:  ${ BGN } ${ MAC } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using VLAN:  ${ BGN } Default ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Using Interface MTU Size:  ${ BGN } Default ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  -e " ${ DGN } Start VM when completed:  ${ BGN } no ${ CL } " 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 17:42:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  -e " ${ BL } Creating an Ubuntu 22.04 VM using the above default settings ${ CL } " 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  advanced_settings( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  true;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  VMID = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set Virtual Machine ID"  8  58  $NEXTID  --title "VIRTUAL MACHINE ID"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  [  -z " $VMID "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        VMID = " $NEXTID " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  pct status " $VMID "  & >/dev/null ||  qm status " $VMID "  & >/dev/null;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  -e " ${ CROSS } ${ RD }  ID  $VMID  is already in use ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Virtual Machine ID:  ${ BGN } $VMID ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  MACH = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "MACHINE TYPE"  --radiolist --cancel-button Exit-Script "Choose Type"  10  58  2  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "i440fx"  "Machine i440fx"  ON \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "q35"  "Machine q35"  OFF \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  $MACH  =  q35 ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Machine Type:  ${ BGN } $MACH ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      FORMAT = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MACHINE = " -machine q35" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Machine Type:  ${ BGN } $MACH ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      FORMAT = ",efitype=4m" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MACHINE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  DISK_CACHE = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "DISK CACHE"  --radiolist "Choose"  --cancel-button Exit-Script 10  58  2  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "0"  "None (Default)"  ON \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "1"  "Write Through"  OFF \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  $DISK_CACHE  =  "1"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Disk Cache:  ${ BGN } Write Through ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      DISK_CACHE = "cache=writethrough," 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Disk Cache:  ${ BGN } None ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      DISK_CACHE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  VM_NAME = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set Hostname"  8  58  ubuntu --title "HOSTNAME"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $VM_NAME  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      HN = "ubuntu" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Hostname:  ${ BGN } $HN ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      HN = $( echo  ${ VM_NAME ,, }  |  tr -d ' ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Hostname:  ${ BGN } $HN ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  CPU_TYPE1 = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "CPU MODEL"  --radiolist "Choose"  --cancel-button Exit-Script 10  58  2  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "0"  "KVM64 (Default)"  ON \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "1"  "Host"  OFF \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  $CPU_TYPE1  =  "1"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using CPU Model:  ${ BGN } Host ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      CPU_TYPE = " -cpu host" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using CPU Model:  ${ BGN } KVM64 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      CPU_TYPE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  CORE_COUNT = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Allocate CPU Cores"  8  58  2  --title "CORE COUNT"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $CORE_COUNT  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      CORE_COUNT = "2" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Allocated Cores:  ${ BGN } $CORE_COUNT ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Allocated Cores:  ${ BGN } $CORE_COUNT ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  RAM_SIZE = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Allocate RAM in MiB"  8  58  2048  --title "RAM"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $RAM_SIZE  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      RAM_SIZE = "2048" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Allocated RAM:  ${ BGN } $RAM_SIZE ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Allocated RAM:  ${ BGN } $RAM_SIZE ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  BRG = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set a Bridge"  8  58  vmbr0 --title "BRIDGE"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $BRG  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      BRG = "vmbr0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Bridge:  ${ BGN } $BRG ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Bridge:  ${ BGN } $BRG ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  MAC1 = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set a MAC Address"  8  58  $GEN_MAC  --title "MAC ADDRESS"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $MAC1  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MAC = " $GEN_MAC " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using MAC Address:  ${ BGN } $MAC ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MAC = " $MAC1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using MAC Address:  ${ BGN } $MAC1 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  VLAN1 = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set a Vlan(leave blank for default)"  8  58  --title "VLAN"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $VLAN1  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      VLAN1 = "Default" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      VLAN = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Vlan:  ${ BGN } $VLAN1 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      VLAN = " ,tag= $VLAN1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Vlan:  ${ BGN } $VLAN1 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  MTU1 = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --inputbox "Set Interface MTU Size (leave blank for default)"  8  58  --title "MTU SIZE"  --cancel-button Exit-Script 3>& 1  1>& 2  2>& 3) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -z $MTU1  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MTU1 = "Default" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MTU = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Interface MTU Size:  ${ BGN } $MTU1 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      MTU = " ,mtu= $MTU1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  -e " ${ DGN } Using Interface MTU Size:  ${ BGN } $MTU1 ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit-script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "START VIRTUAL MACHINE"  --yesno "Start VM when completed?"  10  58) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ DGN } Start VM when completed:  ${ BGN } yes ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    START_VM = "yes" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ DGN } Start VM when completed:  ${ BGN } no ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    START_VM = "no" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 17:42:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "ADVANCED SETTINGS COMPLETE"  --yesno "Ready to create an Ubuntu 22.04 VM?"  --no-button Do-Over 10  58) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ RD } Creating an Ubuntu 22.04 VM using the above advanced settings ${ CL } " 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    header_info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ RD } Using Advanced Settings ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    advanced_settings
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  start_script( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "SETTINGS"  --yesno "Use Default Settings?"  --no-button Advanced 10  58) ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    header_info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ BL } Using Default Settings ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default_settings
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    header_info
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  -e " ${ RD } Using Advanced Settings ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    advanced_settings
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								check_root
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								arch_check
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pve_check
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ssh_check
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								start_script
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_info "Validating Storage" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								while  read  -r line;  do  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TAG = $( echo  $line  |  awk '{print $1}' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TYPE = $( echo  $line  |  awk '{printf "%-10s", $2}' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FREE = $( echo  $line  |  numfmt --field 4-6 --from-unit= K --to= iec --format %.2f |  awk '{printf( "%9sB", $6)}' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ITEM = "   Type:  $TYPE  Free:  $FREE   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  OFFSET = 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [ [  $(( ${# ITEM }  +  $OFFSET ))  -gt ${ MSG_MAX_LENGTH :- }  ] ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MSG_MAX_LENGTH = $(( ${# ITEM }  +  $OFFSET )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  STORAGE_MENU += ( " $TAG "  " $ITEM "  "OFF" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								done  < <( pvesm status -content images |  awk 'NR>1' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VALID = $( pvesm status -content images |  awk 'NR>1' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  [  -z " $VALID "  ] ;  then  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  msg_error "Unable to detect a valid storage location." 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								elif  [  $(( ${# STORAGE_MENU [@] }  /  3 ))  -eq 1  ] ;  then  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  STORAGE = ${ STORAGE_MENU [0] } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								else  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  [  -z " ${ STORAGE : +x } "  ] ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    STORAGE = $( whiptail --backtitle "Proxmox VE Helper Scripts"  --title "Storage Pools"  --radiolist \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " Which storage pool you would like to use for  ${ HN } ?\nTo make a selection, use the Spacebar.\n "  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      16  $(( $MSG_MAX_LENGTH  +  23 ))  6  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      " ${ STORAGE_MENU [@] } "  3>& 1  1>& 2  2>& 3)  ||  exit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_ok " Using  ${ CL } ${ BL } $STORAGE ${ CL }   ${ GN } for Storage Location. " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_ok " Virtual Machine ID is  ${ CL } ${ BL } $VMID ${ CL } . " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_info "Retrieving the URL for the Ubuntu 22.04 Disk Image" 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-14 04:51:52 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								URL = https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_ok " ${ CL } ${ BL } ${ URL } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								wget -q --show-progress $URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								echo  -en "\e[1A\e[0K"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FILE = $( basename $URL )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_ok " Downloaded  ${ CL } ${ BL } ${ FILE } ${ CL } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								STORAGE_TYPE = $( pvesm status -storage $STORAGE  |  awk 'NR>1 {print $2}' )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								case  $STORAGE_TYPE  in 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								nfs |  dir) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_EXT = ".qcow2" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_REF = " $VMID / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_IMPORT = "-format qcow2" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  THIN = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								btrfs) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_EXT = ".raw" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_REF = " $VMID / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  DISK_IMPORT = "-format raw" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FORMAT = ",efitype=4m" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  THIN = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ; ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								esac  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for  i in { 0,1} ;  do  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  disk = " DISK $i " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  eval  DISK${ i } = vm-${ VMID } -disk-${ i } ${ DISK_EXT :- } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  eval  DISK${ i } _REF = ${ STORAGE } :${ DISK_REF :- } ${ !disk } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								done  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_info "Creating a Ubuntu 22.04 VM" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								qm create $VMID  -agent 1${ MACHINE }  -tablet 0  -localtime 1  -bios ovmf${ CPU_TYPE }  -cores $CORE_COUNT  -memory $RAM_SIZE  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -name $HN  -tags proxmox-helper-scripts -net0 virtio,bridge= $BRG ,macaddr= $MAC $VLAN $MTU  -onboot 1  -ostype l26 -scsihw virtio-scsi-pci
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pvesm alloc $STORAGE  $VMID  $DISK0  4M 1>& /dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								qm importdisk $VMID  ${ FILE }  $STORAGE  ${ DISK_IMPORT :- }  1>& /dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								qm set  $VMID  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -efidisk0 ${ DISK0_REF } ${ FORMAT }  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -scsi0 ${ DISK1_REF } ,${ DISK_CACHE } ${ THIN } size = 2G \
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-22 13:00:53 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -ide2 ${ STORAGE } :cloudinit \
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  -boot order = scsi0 \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  -serial0 socket \
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-27 09:57:22 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  -description " <div align='center'><a href='https://Helper-Scripts.com'><img src='https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/logo-81x112.png'/></a>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Ubuntu 22.04 VM 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  <a href = 'https://ko-fi.com/D1D7EP4GF' ><img src = 'https://img.shields.io/badge/☕-Buy me a coffee-blue'  /></a>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  </div>"  >/dev/null
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 16:58:19 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								msg_ok " Created a Ubuntu 22.04 VM  ${ CL } ${ BL } ( ${ HN } ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  [  " $START_VM "  = =  "yes"  ] ;  then  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  msg_info "Starting Ubuntu 22.04 VM" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  qm start $VMID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  msg_ok "Started Ubuntu 22.04 VM" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								msg_ok "Completed Successfully!\n" 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-18 17:42:31 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								echo  -e " Setup Cloud-Init before starting \n
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								More info at https://github.com/tteck/Proxmox/discussions/2072 \n "