Changes for page proxmox

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

From version 10.1
edited by Kevin Wiki
on 2026/05/18 08:16
Change comment: There is no comment for this version
To version 3.1
edited by Kevin Wiki
on 2025/07/05 20:18
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -17,20 +17,14 @@
17 17  
18 18  To view the available LXC templates:
19 19  
20 -{{code language="bash"}}
21 21  pveam list
22 -{{/code}}
23 -
24 24  === Download Templates ===
25 25  
26 26  Use the pveam download command to import templates to the local storage:
27 27  
28 -{{code language="bash"}}
29 29  pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz
30 30  pveam download local ubuntu-24.04-standard_24.04-1_amd64.tar.zst
31 31  pveam download local debian-12-standard_11.7-1_amd64.tar.zst
32 -{{/code}}
33 -
34 34  Once downloaded, these templates can be used to create new LXC containers from the Proxmox web interface or via CLI.
35 35  
36 36  == VM Template from Ubuntu Cloud Image ==
... ... @@ -39,32 +39,22 @@
39 39  
40 40  === Download Ubuntu Cloud Image ===
41 41  
42 -Download the official Ubuntu 24.04 cloud [[image:]]
36 +Download the official Ubuntu 24.04 cloud image:
43 43  
44 -{{code language="bash"}}
45 45  wget http://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img
46 -{{/code}}
47 -
48 48  === Create the Virtual Machine ===
49 49  
50 50  Create a new VM with ID 910 (you can pick any unused ID):
51 51  
52 -{{code language="bash"}}
53 53  qm create 910 -name template-ubuntu-jammy -memory 2048 -net0 virtio,bridge=vmbr0 -cores 2 -sockets 1
54 -{{/code}}
55 -
56 56  === Import and Attach the Disk ===
57 57  
58 58  Choose the correct storage (replace nvme if you use a different storage name):
59 59  
60 -{{code language="bash"}}
61 61  qm importdisk 910 ubuntu-24.04-server-cloudimg-amd64.img nvme
62 62  qm set 910 -scsihw virtio-scsi-pci -virtio0 nvme:vm-910-disk-0
63 -{{/code}}
64 -
65 65  === Configure the VM ===
66 66  
67 -{{code language="bash"}}
68 68  qm set 910 -serial0 socket
69 69  qm set 910 -boot c -bootdisk virtio0
70 70  qm set 910 -agent 1
... ... @@ -73,182 +73,13 @@
73 73  qm set 910 -vga qxl
74 74  qm set 910 -ide2 nvme:cloudinit
75 75  qm resize 910 virtio0 +8G
76 -{{/code}}
77 -
78 -
79 79  If your disk is using SCSI instead of virtio, resize like this:
80 -
81 -{{code language="bash"}}
82 82  qm resize 910 scsi0 +8G
83 -{{/code}}
84 -
85 85  === Convert the VM into a Template ===
86 86  
87 -{{code language="bash"}}
88 88  qm template 910
89 -{{/code}}
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 -
252 252  
253 253  )))
254 254  
image.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.kevin
Size
... ... @@ -1,0 +1,1 @@
1 +40.8 KB
Content