Changes for page proxmox

Last modified by Kevin Wiki on 2026/05/18 15:44

From version 5.1
edited by Kevin Wiki
on 2025/07/05 20:21
Change comment: There is no comment for this version
To version 11.5
edited by Kevin Wiki
on 2026/05/18 15:40
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -92,10 +92,11 @@
92 92  
93 93  == Bash Script to Automate Setup ==
94 94  
95 -You can automate the full process using the script below.
95 +Install the above using bash script below
96 96  
97 97  === setup_proxmox_templates.sh ===
98 98  
99 +{{code language="bash"}}
99 99  #!/bin/bash
100 100  
101 101  # Exit on errors
... ... @@ -102,17 +102,21 @@
102 102  set -e
103 103  
104 104  echo "Downloading LXC templates..."
105 -pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz
106 -pveam download local ubuntu-24.04-standard_24.04-1_amd64.tar.zst
107 -pveam download local debian-12-standard_11.7-1_amd64.tar.zst
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
108 108  
109 109  echo "Downloading Ubuntu cloud image..."
110 110  wget -N http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
111 111  
112 112  echo "Creating VM Template..."
113 -qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1
114 -qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme
115 -qm set 910 -scsihw virtio-scsi-pci -virtio0 nvme:vm-910-disk-0
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 +
116 116  qm set 910 -serial0 socket
117 117  qm set 910 -boot c -bootdisk virtio0
118 118  qm set 910 -agent 1
... ... @@ -120,10 +120,154 @@
120 120  qm set 910 -vcpus 1
121 121  qm set 910 -vga qxl
122 122  qm set 910 -ide2 nvme:cloudinit
123 -qm resize 910 virtio0 +8G
128 +# qm resize 910 scsi0 +8G
129 +
130 +read -p "Confirm converting to template by pressing Enter"
124 124  qm template 910
125 125  
126 126  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 +{{code language="bash"}}
144 +unset HISTFILE
145 +export HISTSIZE=0
146 +export HISTFILESIZE=0
147 +
148 +sudo rm /.bash_history
149 +rm ~/.bash_history
150 +{{/code}}
151 +
152 +**qemu-guest-agent** is for allowing proxmox to query information from the VM such as IP address, shutdown commands, etc
153 +
154 +{{code language="bash"}}
155 +sudo apt update
156 +sudo apt upgrade -y
157 +sudo apt install qemu-guest-agent -y
158 +
159 +sudo systemctl enable qemu-guest-agent.service
160 +sudo systemctl start qemu-guest-agent.service
161 +{{/code}}
162 +
163 +**reset machine-id** to not have overlapping ids from same template
164 +
165 +{{code language="bash"}}
166 +cat /dev/null > /etc/machine-id
167 +cat /dev/null > /var/lib/dbus/machine-id
168 +{{/code}}
169 +
170 +**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.
171 +
172 +If you used a cloud-init base image it will have run the default cloudinit which installs and configures a bunch of s
173 +
174 +{{code language="bash"}}
175 +cloud-init clean
176 +{{/code}}
177 +
178 +This is a debian example of what we are looking for:
179 +
180 +{{code language="yaml"}}
181 +# The top level settings are used as module
182 +# and system configuration.
183 +# A set of users which may be applied and/or used by various modules
184 +# when a 'default' entry is found it will reference the 'default_user'
185 +# from the distro configuration specified below
186 +
187 +# If this is set, 'root' will not be able to ssh in and they
188 +# will get a message to login instead as the default $user
189 +disable_root: true
190 +
191 +# This will cause the set+update hostname module to not operate (if true)
192 +preserve_hostname: false
193 +
194 +apt:
195 + # This prevents cloud-init from rewriting apt's sources.list file,
196 + # which has been a source of surprise.
197 + preserve_sources_list: true
198 +
199 +# manually managed resolv
200 +manage_resolv_conf: false
201 +
202 +package_update: true
203 +packages:
204 + - qemu-guest-agent
205 +
206 +# The modules that run in the 'init' stage
207 +cloud_init_modules:
208 + - seed_random
209 + - bootcmd
210 + - write-files
211 + - growpart
212 + - resizefs
213 + - disk_setup
214 + - mounts
215 + - set_hostname
216 + - update_hostname
217 + - update_etc_hosts
218 + - ca-certs
219 + - rsyslog
220 + - users-groups
221 + - ssh
222 +
223 +# The modules that run in the 'config' stage
224 +cloud_config_modules:
225 + - keyboard
226 + - locale
227 + - set-passwords
228 + - grub-dpkg
229 + - apt-pipelining
230 + - apt-configure
231 + - ntp
232 + - timezone
233 + - disable-ec2-metadata
234 + - runcmd
235 +
236 +# The modules that run in the 'final' stage
237 +cloud_final_modules:
238 + - package-update-upgrade-install
239 + - write-files-deferred
240 + - scripts-vendor
241 + - scripts-per-once
242 + - scripts-per-boot
243 + - scripts-per-instance
244 + - scripts-user
245 + - ssh-authkey-fingerprints
246 +# - keys-to-console
247 + - install-hotplug
248 +# - phone-home
249 + - final-message
250 + - power-state-change
251 +
252 +runcmd:
253 + - systemctl enable qemu-guest-agent.service
254 +
255 +# System and/or distro specific settings
256 +# (not accessible to handlers/transforms)
257 +system_info:
258 + # This will affect which distro class gets used
259 + distro: debian
260 + # Other config here will be given to the distro class and/or path classes
261 + paths:
262 + cloud_dir: /var/lib/cloud/
263 + templates_dir: /etc/cloud/templates/
264 + package_mirrors:
265 + - arches: [default]
266 + failsafe:
267 + primary: https://deb.debian.org/debian
268 + security: https://deb.debian.org/debian-security
269 + ssh_svcname: ssh
270 +{{/code}}
271 +
272 +
273 +
274 +
275 +
127 127  
128 128  )))
129 129  
image.jpg
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.kevin
Size
... ... @@ -1,1 +1,0 @@
1 -40.8 KB
Content