Changes for page proxmox
Last modified by Kevin Wiki on 2026/05/18 15:44
From version
3.1
edited by Kevin Wiki
on 2025/07/05 20:18
on 2025/07/05 20:18
Change comment:
There is no comment for this version
To version
11.2
edited by Kevin Wiki
on 2026/05/18 15:38
on 2026/05/18 15:38
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -17,14 +17,20 @@ 17 17 18 18 To view the available LXC templates: 19 19 20 +{{code language="bash"}} 20 20 pveam list 22 +{{/code}} 23 + 21 21 === Download Templates === 22 22 23 23 Use the pveam download command to import templates to the local storage: 24 24 28 +{{code language="bash"}} 25 25 pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz 26 26 pveam download local ubuntu-24.04-standard_24.04-1_amd64.tar.zst 27 27 pveam download local debian-12-standard_11.7-1_amd64.tar.zst 32 +{{/code}} 33 + 28 28 Once downloaded, these templates can be used to create new LXC containers from the Proxmox web interface or via CLI. 29 29 30 30 == VM Template from Ubuntu Cloud Image == ... ... @@ -33,22 +33,32 @@ 33 33 34 34 === Download Ubuntu Cloud Image === 35 35 36 -Download the official Ubuntu 24.04 cloud image: 42 +Download the official Ubuntu 24.04 cloud [[image:]] 37 37 44 +{{code language="bash"}} 38 38 wget http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img 46 +{{/code}} 47 + 39 39 === Create the Virtual Machine === 40 40 41 41 Create a new VM with ID 910 (you can pick any unused ID): 42 42 52 +{{code language="bash"}} 43 43 qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1 54 +{{/code}} 55 + 44 44 === Import and Attach the Disk === 45 45 46 46 Choose the correct storage (replace nvme if you use a different storage name): 47 47 60 +{{code language="bash"}} 48 48 qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme 49 49 qm set 910 -scsihw virtio-scsi-pci -virtio0 nvme:vm-910-disk-0 63 +{{/code}} 64 + 50 50 === Configure the VM === 51 51 67 +{{code language="bash"}} 52 52 qm set 910 -serial0 socket 53 53 qm set 910 -boot c -bootdisk virtio0 54 54 qm set 910 -agent 1 ... ... @@ -57,13 +57,195 @@ 57 57 qm set 910 -vga qxl 58 58 qm set 910 -ide2 nvme:cloudinit 59 59 qm resize 910 virtio0 +8G 76 +{{/code}} 77 + 78 + 60 60 If your disk is using SCSI instead of virtio, resize like this: 80 + 81 +{{code language="bash"}} 61 61 qm resize 910 scsi0 +8G 83 +{{/code}} 84 + 62 62 === Convert the VM into a Template === 63 63 87 +{{code language="bash"}} 64 64 qm template 910 89 +{{/code}} 90 + 65 65 Now you can use this template to clone new VMs instantly. 66 66 93 +== Bash Script to Automate Setup == 94 + 95 +Install the above using bash script below 96 + 97 +=== setup_proxmox_templates.sh === 98 + 99 +{{code language="bash"}} 100 +#!/bin/bash 101 + 102 +# Exit on errors 103 +set -e 104 + 105 +echo "Downloading LXC templates..." 106 +pveam download nvme ubuntu-22.04-standard_22.04-1_amd64.tar.zst 107 +pveam download nvme ubuntu-24.04-standard_24.04-2_amd64.tar.zst 108 +pveam download nvme alpine-3.21-default_20241217_amd64.tar.xz 109 +pveam download nvme debian-12-standard_12.7-1_amd64.tar.zst 110 + 111 +echo "Downloading Ubuntu cloud image..." 112 +wget -N http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img 113 + 114 +echo "Creating VM Template..." 115 +qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1 && 1 116 + 117 +# qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme 118 +# qm set 910 -scsihw virtio-scsi-pci -scsi0-virtio0 nvme:910/vm-910-disk-0 119 +qm set 910 -scsihw virtio-scsi-pci -scsi0 nvme:0,import-from=/mnt/nvmestorage/template/iso/ubuntu-24.04-server-cloudimg-amd64.img 120 + 121 +qm set 910 -serial0 socket 122 +qm set 910 -boot c -bootdisk virtio0 123 +qm set 910 -agent 1 124 +qm set 910 -hotplug disk,network,usb 125 +qm set 910 -vcpus 1 126 +qm set 910 -vga qxl 127 +qm set 910 -ide2 nvme:cloudinit 128 +# qm resize 910 scsi0 +8G 129 + 130 +read -p "Confirm converting to template by pressing Enter" 131 +qm template 910 132 + 133 +echo "Templates setup complete." 134 +{{/code}} 135 + 136 + 137 += VM runtime setup = 138 + 139 +After creating the VM and before making it into a template there are some programs and settings we want to ensure exists always. 140 + 141 +(% id="cke_bm_721114S" style="display:none" %)** **(%%)**clear bash history** to not leave any configuration in history, clear and disable history file before proceeding: 142 + 143 +**qemu-guest-agent** is for allowing proxmox to query information from the VM such as IP address, shutdown commands, etc 144 + 145 +{{code language="bash"}} 146 +sudo apt update 147 +sudo apt upgrade -y 148 +sudo apt install qemu-guest-agent -y 149 + 150 +sudo systemctl enable qemu-guest-agent.service 151 +sudo systemctl start qemu-guest-agent.service 152 +{{/code}} 153 + 154 +**reset machine-id** to not have overlapping ids from same template 155 + 156 +{{code language="bash"}} 157 +cat /dev/null > /etc/machine-id 158 +cat /dev/null > /var/lib/dbus/machine-id 159 +{{/code}} 160 + 161 +**cloud-init** is a great hook for installing or configuring programs or receiving variables from cloudinit CDROM drive. Making it easier to change IP, hostname, DNS, username/password, etc between VMs 162 + 163 +{{code language="bash"}} 164 +cloud-init clean 165 +{{/code}} 166 + 167 +This is a debian example of what we are looking for: 168 + 169 +{{code language="yaml"}} 170 +# The top level settings are used as module 171 +# and system configuration. 172 +# A set of users which may be applied and/or used by various modules 173 +# when a 'default' entry is found it will reference the 'default_user' 174 +# from the distro configuration specified below 175 + 176 +# If this is set, 'root' will not be able to ssh in and they 177 +# will get a message to login instead as the default $user 178 +disable_root: true 179 + 180 +# This will cause the set+update hostname module to not operate (if true) 181 +preserve_hostname: false 182 + 183 +apt: 184 + # This prevents cloud-init from rewriting apt's sources.list file, 185 + # which has been a source of surprise. 186 + preserve_sources_list: true 187 + 188 +# manually managed resolv 189 +manage_resolv_conf: false 190 + 191 +package_update: true 192 +packages: 193 + - qemu-guest-agent 194 + 195 +# The modules that run in the 'init' stage 196 +cloud_init_modules: 197 + - seed_random 198 + - bootcmd 199 + - write-files 200 + - growpart 201 + - resizefs 202 + - disk_setup 203 + - mounts 204 + - set_hostname 205 + - update_hostname 206 + - update_etc_hosts 207 + - ca-certs 208 + - rsyslog 209 + - users-groups 210 + - ssh 211 + 212 +# The modules that run in the 'config' stage 213 +cloud_config_modules: 214 + - keyboard 215 + - locale 216 + - set-passwords 217 + - grub-dpkg 218 + - apt-pipelining 219 + - apt-configure 220 + - ntp 221 + - timezone 222 + - disable-ec2-metadata 223 + - runcmd 224 + 225 +# The modules that run in the 'final' stage 226 +cloud_final_modules: 227 + - package-update-upgrade-install 228 + - write-files-deferred 229 + - scripts-vendor 230 + - scripts-per-once 231 + - scripts-per-boot 232 + - scripts-per-instance 233 + - scripts-user 234 + - ssh-authkey-fingerprints 235 +# - keys-to-console 236 + - install-hotplug 237 +# - phone-home 238 + - final-message 239 + - power-state-change 240 + 241 +runcmd: 242 + - systemctl enable qemu-guest-agent.service 243 + 244 +# System and/or distro specific settings 245 +# (not accessible to handlers/transforms) 246 +system_info: 247 + # This will affect which distro class gets used 248 + distro: debian 249 + # Other config here will be given to the distro class and/or path classes 250 + paths: 251 + cloud_dir: /var/lib/cloud/ 252 + templates_dir: /etc/cloud/templates/ 253 + package_mirrors: 254 + - arches: [default] 255 + failsafe: 256 + primary: https://deb.debian.org/debian 257 + security: https://deb.debian.org/debian-security 258 + ssh_svcname: ssh 259 +{{/code}} 260 + 261 + 262 + 263 + 264 + 67 67 68 68 ))) 69 69
- image.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.kevin - Size
-
... ... @@ -1,1 +1,0 @@ 1 -40.8 KB - Content