Changes for page proxmox
Last modified by Kevin Wiki on 2026/05/18 15:44
From version
4.1
edited by Kevin Wiki
on 2025/07/05 20:20
on 2025/07/05 20:20
Change comment:
There is no comment for this version
To version
10.2
edited by Kevin Wiki
on 2026/05/18 08:18
on 2026/05/18 08:18
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -90,6 +90,173 @@ 90 90 91 91 Now you can use this template to clone new VMs instantly. 92 92 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 +**qemu-guest-agent** is for allowing proxmox to query information from the VM such as IP address, shutdown commands, etc 142 + 143 +{{code language="bash"}} 144 +sudo apt update 145 +sudo apt upgrade -y 146 +sudo apt install qemu-guest-agent -y 147 + 148 +sudo systemctl enable qemu-guest-agent.service 149 +sudo systemctl start qemu-guest-agent.service 150 +{{/code}} 151 + 152 +**reset machine-id** to not have overlapping ids from same templat 153 + 154 +{{code language="bash"}} 155 +cat /dev/null > /etc/machine-id 156 +cat /dev/null > /var/lib/dbus/machine-id 157 +{{/code}} 158 + 159 +**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. 160 + 161 + 162 +This is a debian example of what we are looking for: 163 + 164 +{{code language="yaml"}} 165 +# The top level settings are used as module 166 +# and system configuration. 167 +# A set of users which may be applied and/or used by various modules 168 +# when a 'default' entry is found it will reference the 'default_user' 169 +# from the distro configuration specified below 170 +users: 171 + - default 172 + 173 +# If this is set, 'root' will not be able to ssh in and they 174 +# will get a message to login instead as the default $user 175 +disable_root: true 176 + 177 +# This will cause the set+update hostname module to not operate (if true) 178 +preserve_hostname: false 179 + 180 +apt: 181 + # This prevents cloud-init from rewriting apt's sources.list file, 182 + # which has been a source of surprise. 183 + preserve_sources_list: true 184 + 185 +# The modules that run in the 'init' stage 186 +cloud_init_modules: 187 + - seed_random 188 + - bootcmd 189 + - write-files 190 + - growpart 191 + - resizefs 192 + - disk_setup 193 + - mounts 194 + - set_hostname 195 + - update_hostname 196 + - update_etc_hosts 197 + - ca-certs 198 + - rsyslog 199 + - users-groups 200 + - ssh 201 + 202 +# The modules that run in the 'config' stage 203 +cloud_config_modules: 204 + - locale 205 + - set-passwords 206 + - grub-dpkg 207 + - apt-pipelining 208 + - apt-configure 209 + - ntp 210 + - timezone 211 + - disable-ec2-metadata 212 + - runcmd 213 + 214 +# The modules that run in the 'final' stage 215 +cloud_final_modules: 216 + - package-update-upgrade-install 217 + - write-files-deferred 218 + - scripts-vendor 219 + - scripts-per-once 220 + - scripts-per-boot 221 + - scripts-per-instance 222 + - scripts-user 223 + - ssh-authkey-fingerprints 224 +# - keys-to-console 225 + - install-hotplug 226 +# - phone-home 227 + - final-message 228 + - power-state-change 229 + 230 +# System and/or distro specific settings 231 +# (not accessible to handlers/transforms) 232 +system_info: 233 + # This will affect which distro class gets used 234 + distro: debian 235 + # Default user name + that default users groups (if added/used) 236 + default_user: 237 + name: debian 238 + lock_passwd: True 239 + gecos: Debian 240 + groups: [sudo] 241 + # Disables password-less sudo commands for default/debian user 242 + sudo: ["ALL=(ALL) ALL"] 243 + shell: /bin/bash 244 + # Other config here will be given to the distro class and/or path classes 245 + paths: 246 + cloud_dir: /var/lib/cloud/ 247 + templates_dir: /etc/cloud/templates/ 248 + package_mirrors: 249 + - arches: [default] 250 + failsafe: 251 + primary: https://deb.debian.org/debian 252 + security: https://deb.debian.org/debian-security 253 + ssh_svcname: ssh 254 +{{/code}} 255 + 256 + 257 + 258 + 259 + 93 93 94 94 ))) 95 95
- image.jpg
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.kevin - Size
-
... ... @@ -1,1 +1,0 @@ 1 -40.8 KB - Content