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
Change comment: There is no comment for this version
To version 10.1
edited by Kevin Wiki
on 2026/05/18 08:16
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -90,6 +90,165 @@
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 +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.
153 +
154 +This is a debian example of what we are looking for:
155 +
156 +{{code language="yaml"}}
157 +# The top level settings are used as module
158 +# and system configuration.
159 +# A set of users which may be applied and/or used by various modules
160 +# when a 'default' entry is found it will reference the 'default_user'
161 +# from the distro configuration specified below
162 +users:
163 + - default
164 +
165 +# If this is set, 'root' will not be able to ssh in and they
166 +# will get a message to login instead as the default $user
167 +disable_root: true
168 +
169 +# This will cause the set+update hostname module to not operate (if true)
170 +preserve_hostname: false
171 +
172 +apt:
173 + # This prevents cloud-init from rewriting apt's sources.list file,
174 + # which has been a source of surprise.
175 + preserve_sources_list: true
176 +
177 +# The modules that run in the 'init' stage
178 +cloud_init_modules:
179 + - seed_random
180 + - bootcmd
181 + - write-files
182 + - growpart
183 + - resizefs
184 + - disk_setup
185 + - mounts
186 + - set_hostname
187 + - update_hostname
188 + - update_etc_hosts
189 + - ca-certs
190 + - rsyslog
191 + - users-groups
192 + - ssh
193 +
194 +# The modules that run in the 'config' stage
195 +cloud_config_modules:
196 + - locale
197 + - set-passwords
198 + - grub-dpkg
199 + - apt-pipelining
200 + - apt-configure
201 + - ntp
202 + - timezone
203 + - disable-ec2-metadata
204 + - runcmd
205 +
206 +# The modules that run in the 'final' stage
207 +cloud_final_modules:
208 + - package-update-upgrade-install
209 + - write-files-deferred
210 + - scripts-vendor
211 + - scripts-per-once
212 + - scripts-per-boot
213 + - scripts-per-instance
214 + - scripts-user
215 + - ssh-authkey-fingerprints
216 +# - keys-to-console
217 + - install-hotplug
218 +# - phone-home
219 + - final-message
220 + - power-state-change
221 +
222 +# System and/or distro specific settings
223 +# (not accessible to handlers/transforms)
224 +system_info:
225 + # This will affect which distro class gets used
226 + distro: debian
227 + # Default user name + that default users groups (if added/used)
228 + default_user:
229 + name: debian
230 + lock_passwd: True
231 + gecos: Debian
232 + groups: [sudo]
233 + # Disables password-less sudo commands for default/debian user
234 + sudo: ["ALL=(ALL) ALL"]
235 + shell: /bin/bash
236 + # Other config here will be given to the distro class and/or path classes
237 + paths:
238 + cloud_dir: /var/lib/cloud/
239 + templates_dir: /etc/cloud/templates/
240 + package_mirrors:
241 + - arches: [default]
242 + failsafe:
243 + primary: https://deb.debian.org/debian
244 + security: https://deb.debian.org/debian-security
245 + ssh_svcname: ssh
246 +{{/code}}
247 +
248 +
249 +
250 +
251 +
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