Publikálva: 2026.03.11
Frissítve: 2026.03.15
Publikálva: 2026.03.11
Frissítve: 2026.03.15
Ez az egész sztori a Proxmox VE-hez tartozik, viszont szerintem megér egy külön cikket, mert hosszasan lehet erről beszélni. Illetve a Proxmox VE már nagyon telítve van így is, szóval ezért is gondoltam, hogy ezt a témát külön szedem. Igazából mindig az a kérdés, hogy honnan szeretnénk megközelíteni a dolgot és technikailag mire is van szükségünk?
A Proxmox lehetőséget biztosít nekünk arra, hogy egy már előre feltelepített VM-ből template-t készítsünk, melyet klónozva, újra felhasználhassuk azt. Ez akkor jó, hogy ha egyszerre nagy mennyiségű VM-t szeretnénk telepíteni haosnló paraméterekkel, vagy szimplán csak szeretünk egyszer dolgozni. Milyen lehetőségeink vannak? Gondolkozhatunk abban, hogy egy VM-t megcsinálunk és abból szeretnénk egy sablont készíteni, vagy használhatjuk az előre elkészített Cloud Image-ket, amik technikailag pont erre lettek kitalálva.
Őszintén szólva a telepített VM-ből készült sablonról nem feltétlenül beszélnék, mert az egy alap dolog. Előre meg lett csinálva áltlunk és már csak paraméterezni kell a klónt az első boot után. Első sorban a Cloud-Init témára koncentrálnék.
Hogy hogyan kell létrehozni egy új linux-os VM-t, arra részletekbe menően nem szeretnék kitérni, mert itt írtam már róla egy lépésről lépésre útmutatót. Jelen részben kizárólag a különbségekre koncentrálnék csak.
Első körben töltsük le az éppen aktuális ubuntu szerver image-t a nekünk tetsző módon (wget vagy "Download from URL"). Az alábbi linken keressük ezt a fájlt: ubuntu-24.04-server-cloudimg-amd64.img.
https://cloud-images.ubuntu.com/releases/server/24.04/release/
A General fülön adjunk egy olyan nevet a gépnek, ami DNS név kompatibilis. Tehát speciális karaktert nem tartalmazhat (Leginkább kötőjelben gondolkozzunk elválasztásnál)!
Az OS fülön: "Do not use any media"
A Disks fülön: Töröljük a disk-et. Ezt később importáljuk be:
Lépjünk oda, ahova letöltöttük az image fájlt: (Alapértelmezetten)
cd /var/lib/vz/template/iso/
A következő lépésben megnöveljük a disk méretét. A +57G helyett tetszőleges számot is írhatunk. Ezzel a növeléssel együtt nagyjából 60 GB-os lesz a diszkünk.
qemu-img resize ubuntu-24.04-server-cloudimg-amd64.img +57G
Ezt követően importáljuk a meghajtót a megfelelő számú VM alá:
qm disk import <vm_id> <img_file> <storage>
Esetemben:
qm disk import 999 ubuntu-24.04-server-cloudimg-amd64.img local-lvm
A VM Hardware résznénél megjelent egy "unused disk":
Ezt vegyük használatba a következő paraméterekkel:
A CD-ROM-ot töröljük, ugyanis nem lesz rá szükség, illetve vegyünk fel egy új "CloudInit Drive"-ot. Nyomjuk az "Add" gombra -> CloudInit Drive opció. IDE helyett használjunk inkább SCSI-t.
Ha mindent jól csináltunk, akkor így kell kinéznie a Hardware résznek nagyjából:
Menjünk át a Cloud-Init részhez
Végül nyomjunk rá a "Regenerate Image" gombra.
Lehetőség szerint ne bootoljuk be a gépet, hanem ha mindent jónak látunk, akkor jobb egérgomb a VM nevére és válasszuk a "Convert to template" opciót.
Ha klónozni szeretnénk a template-t, akkor jobb egérgomb a template-re és válasszuk a "Clone" opciót.
Az új VM esetében töltsük ki az IP Config opciót a Cloud-Init résznél, majd indíthatjuk is a gépet. Az első boot kicsit lassabb.
Mivel az élet sajnos nem habos torta, emiatt persze itt is akadnak gondok. Console esetében a billentyűzet nyelve angol, szóval bejelentkezésnél figyeljünk oda erre. Az időzóna szintén nem a magyarnak megfelelő. Szóval első bejelentkezést követően ezeket kezelni kell. Az alábbi parancsokat nem fogom mélységekbe menően magyarázni, de ide rakom, hogy mik az alapok.
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure keyboard-configuration
sudo timedatectl set-timezone Europe/Budapest
sudo reboot
Mi van akkor, ha nem elég nekünk a Proxmox Web UI-ja által nyújtott lehetőségek, mert többet szeretnénk. (Vagy biztonsági szempontból mást sem győsz meg az, hogy plain text formátumban ott van a jelszó a felületen.) Legnagyobb szerencsénkre lehetőségünk van egyedi snippet csinálni és azt megadni. Amivel tisztában kell lenni, hogy ez egy .yaml fájl kell, hogy legyen és a formátuma is meg kell, hogy feleljen a yaml követelményeinek.
Először is ellenőrizzük, hogy az adott storage-n, amin dolgozni szeretnénk, engedélyezve van-e a "Snippets" opció: Datacenter -> Storage -> például local.
Bemásolok egy konkrétan elkészített snippet, ez viszont nem felel meg a formai követelményeknek. Ezen kóddal szeretném szemléltetni, illetve magyarázni, hogy mi mindent lehet megtenni egy ilyen fájlban. Lentebb biztosítok letöltési linket egy txt fájlhoz, ami minden igényt kielégít.
nano /var/lib/vz/snippets/ubuntu-24.yaml
#cloud-config
preserve_hostname: false
manage_etc_hosts: true
users:
- name: feketebt
groups: sudo
shell: /bin/bash
lock_passwd: false
passwd: "$6$v4pWfv2/1rR24SDS$TE4yxcNddNZTa/N50AmN5onikC6rfG1pZS2f1aN4TzWY5X3pfhlDNENUxOxTVImakdITSA4la8r3zW/Y8HB5S/"
ssh_authorized_keys:
- ssh-rsa AAAAB3...
- ssh-dss AAAAB3...
- ssh-ed25519 AAAA...
package_update: true
package_upgrade: true
package_reboot_if_required: true
locale: hu_HU.UTF-8
timezone: Europe/Budapest
ntp:
enabled: true
servers:
- 0.hu.pool.ntp.org
- 1.hu.pool.ntp.org
- 2.hu.pool.ntp.org
keyboard:
layout: hu
variant: nodeadkeys
model: pc105
apt:
proxy: http://proxy.feketebt.net:8080
conf: |
Acquire::Retries "5";
Acquire::http::Pipeline-Depth "0";
Acquire::http::No-Cache "true";
write_files:
- path: /etc/apt/apt.conf.d/95proxies
permissions: '0644'
content: |
Acquire::http::Proxy "http://proxy.feketebt.net:8080";
- path: /etc/profile.d/proxy.sh
permissions: '0644'
content: |
export http_proxy="http://proxy.feketebt.net:8080"
export no_proxy="localhost,127.0.0.1,10.0.0.0/8,172.24.0.0/16,192.168.0.0/16"
packages:
- qemu-guest-agent
runcmd:
- sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
- sed -i 's/^#\?ChallengeResponseAuthentication.*/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config
- systemctl reload ssh
- systemctl enable qemu-guest-agent
- systemctl start qemu-guest-agent
- echo "snoopy snoopy/install-ld-preload boolean true" | debconf-set-selections
- DEBIAN_FRONTEND=noninteractive apt-get install -y snoopy
Nagyjából összefoglalva:
Hashelt jelszó létrehozása Linux esetében:
sudo apt install whois -y
Majd:
mkpasswd -m sha-512 "abc123"
Az itt kapott értéket másoljuk be a passwd részhez.
A kezdeti template VM létrehozása történhet a fentiekben leírtaknak megfelelően. Annyi különbséggel, hogy a User, Password és SSH public key részeket jelen esetben hagyjuk üressen.
Végezetül, ha végeztük a .yaml fájl szerkesztésével, a következő paranccsal rendeljük hozzá a megfelelő VM-hez:
qm set 999 --cicustom "user=local:snippets/ubuntu-24.yaml"
Lehetőség szerint ne bootoljuk be a gépet, hanem ha mindent jónak látunk, akkor jobb egérgomb a VM nevére és válasszuk a "Convert to template" opciót.
Ha klónozni szeretnénk a template-t, akkor jobb egérgomb a template-re és válasszuk a "Clone" opciót.
Az új VM esetében töltsük ki az IP Config opciót a Cloud-Init résznél, majd indíthatjuk is a gépet. Az első boot kicsit lassabb és mire minden csomagot és beállítást elvégez, az időbe telik (kb. 2-3 perc).
Mivel az élet sajnos továbbra sem habos torta, emiatt persze itt is akadnak gondok.A VM hostnevének a megváltoztatása ránk lesz bízva, mert sajnos azt már nem szedi át a Proxmox-ból.
sudo nano /etc/hostname
sudo hostname --file /etc/hostname
illetve
sudo nano /etc/hosts
Az előre elkészített változatok letölthetőek innen: (A fájlt kiterjesztését meg kell változtatni .yaml-re, illetve az első 2 sort törölni kell!)
Az alap verzió. - ubuntu24-04.txt
Ez tartalmazza a szükséges proxy konfigot is, csak át kell írni. - ubuntu24-04-proxy.txt
Ez tartalmazza a szükséges proxy konfigot, ntp-t, és egy prompt nélküli snoopy csomag telepítést is. Csak át kell írni. - ubuntu24-04-full.txt
Valószínűleg sokan az Ubunut mellett fognak dönteni, de szerintem nem csak én vagyok az egyedüli, aki sok esetben inkább Debian-t használ. Az alap VM beállítása és a Proxmox által felkínált alap Cloud-Init opciók ugyanazok, mint Ubuntu alatt. Ezekben semmi eltérés nincs, azt leszámítva, hogy Ubuntu helyett Debain image-t használunk.
Az alábbi linkről töltsük le az éppen aktuális image-t. Az Ubuntu-val ellentétben ez egy ".qcow2" kiterjesztésű állomány lesz, így lehetőség szerint wget-tel töltsük le egy nekünk tetsző helyre. Egy ehhez hasonló elnevezésű fájlt keressünk: debian-13-genericcloud-amd64-20260220-2394.qcow2. Lényegében csak a dátum fog eltérni ettől a névtől.
https://cloud.debian.org/images/cloud/trixie/
Az alábbi paranccsal az alapértelmezett helyre töltjük le:
wget -P /var/lib/vz/template/iso https://cloud.debian.org/images/cloud/trixie/20260220-2394/debian-13-genericcloud-amd64-20260220-2394.qcow2
Egyfajta összefogalalásképpen, amit az Ubuntu 24.04-gyel két részben írtam le, itt egyben újra megmutatom az egészet.
A template létrehozása:
A General fülön adjunk egy olyan nevet a gépnek, ami DNS név kompatibilis. Tehát speciális karaktert nem tartalmazhat (Leginkább kötőjelben gondolkozzunk elválasztásnál)!
Az OS fülön: "Do not use any media"
A Disks fülön: Töröljük a disk-et. Ezt később importáljuk be:
Lépjünk oda, ahova letöltöttük az image fájlt: (Alapértelmezetten)
cd /var/lib/vz/template/iso/
A következő lépésben megnöveljük a disk méretét. A +20G helyett tetszőleges számot is írhatunk.
qemu-img resize debian-13-genericcloud-amd64-20260220-2394.qcow2 +20G
Ezt követően importáljuk a meghajtót a megfelelő számú VM alá:
qm disk import <vm_id> <img_file> <storage>
Esetemben:
qm disk import 997 debian-13-genericcloud-amd64-20260220-2394.qcow2 local-lvm
A VM Hardware résznénél megjelent egy "unused disk":
Ezt vegyük használatba a következő paraméterekkel:
A CD-ROM-ot töröljük, ugyanis nem lesz rá szükség, illetve vegyünk fel egy új "CloudInit Drive"-ot. Nyomjuk az "Add" gombra -> CloudInit Drive opció. IDE helyett használjunk inkább SCSI-t.
Ha mindent jól csináltunk, akkor így kell kinéznie a Hardware résznek nagyjából:
Menjünk át a Cloud-Init részhez
Végül nyomjunk rá a "Regenerate Image" gombra.
A snippet létrehozása:
Először is ellenőrizzük, hogy az adott storage-n, amin dolgozni szeretnénk, engedélyezve van-e a "Snippets" opció: Datacenter -> Storage -> például local.
Bemásolok egy konkrétan elkészített snippet, ez viszont nem felel meg a formai követelményeknek. Ezen kóddal szeretném szemléltetni, illetve magyarázni, hogy mi mindent lehet megtenni egy ilyen fájlban. Lentebb biztosítok letöltési linket egy txt fájlhoz, ami minden igényt kielégít.
nano /var/lib/vz/snippets/debian-13.yaml
#cloud-config
preserve_hostname: false
manage_etc_hosts: true
users:
- name: feketebt
groups: sudo
shell: /bin/bash
lock_passwd: false
passwd: "$6$v4pWfv2/1rR24SDS$TE4yxcNddNZTa/N50AmN5onikC6rfG1pZS2f1aN4TzWY5X3pfhlDNENUxOxTVImakdITSA4la8r3zW/Y8HB5S/"
ssh_authorized_keys:
- ssh-rsa AAAAB3...
- ssh-dss AAAAB3...
- ssh-ed25519 AAAA...
package_update: true
package_upgrade: true
package_reboot_if_required: true
locale: hu_HU.UTF-8
timezone: Europe/Budapest
apt:
proxy: http://proxy.feketebt.net:8080
conf: |
Acquire::Retries "5";
Acquire::http::Pipeline-Depth "0";
Acquire::http::No-Cache "true";
ntp:
enabled: true
servers:
- 0.hu.pool.ntp.org
- 1.hu.pool.ntp.org
- 2.hu.pool.ntp.org
packages:
- qemu-guest-agent
- debconf-utils
- keyboard-configuration
- console-setup
- rsyslog
- dnsutils
write_files:
- path: /etc/default/keyboard
permissions: "0644"
content: |
XKBMODEL="pc105"
XKBLAYOUT="hu"
XKBVARIANT="nodeadkeys"
XKBOPTIONS=""
BACKSPACE="guess"
- path: /etc/profile.d/proxy.sh
permissions: "0644"
content: |
export http_proxy="http://proxy.feketebt.net:8080"
export no_proxy="localhost,127.0.0.1,127.0.1.1,10.0.0.0/8,172.24.0.0/16,192.168.0.0/24"
- path: /etc/systemd/journald.conf.d/persistent.conf
permissions: "0644"
content: |
[Journal]
Storage=persistent
SystemMaxUse=200M
RuntimeMaxUse=100M
runcmd:
- mkdir -p /var/log/journal
- systemctl restart systemd-journald
- setupcon
- sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
- sed -i 's/^#\?ChallengeResponseAuthentication.*/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config
- systemctl reload ssh
- systemctl enable qemu-guest-agent
- systemctl start qemu-guest-agent
- systemctl enable --now rsyslog
- |
echo "snoopy snoopy/install-ld-preload boolean true" | debconf-set-selections
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y snoopy
Ez a full snippet, ettől lehet egyszerűbbet és bonyolultabbat is cisnálni. De ez egy jó magyarázati alap.
Nagyjából összefoglalva:
Hashelt jelszó létrehozása Linux esetében:
sudo apt install whois -y
Majd:
mkpasswd -m sha-512 "abc123"
Az itt kapott értéket másoljuk be a passwd részhez.
Ha végeztük a .yaml fájl szerkesztésével, a következő paranccsal rendeljük hozzá a megfelelő VM-hez:
qm set 997 --cicustom "user=local:snippets/debian-13.yaml"
Lehetőség szerint ne bootoljuk be a gépet, hanem ha mindent jónak látunk, akkor jobb egérgomb a VM nevére és válasszuk a "Convert to template" opciót.
Az előre elkészített változatok letölthetőek innen: (A fájlt kiterjesztését meg kell változtatni .yaml-re, illetve az első 2 sort törölni kell!)
Az alap verzió. - debian13.txt
Ez tartalmazza a szükséges proxy konfigot is, csak át kell írni. - debian13-proxy.txt
Ez tartalmazza a szükséges proxy konfigot, ntp-t, és egy prompt nélküli snoopy csomag telepítést is. Csak át kell írni. - debian13-full.txt
A VM klónozása:
Ha klónozni szeretnénk a template-t, akkor jobb egérgomb a template-re és válasszuk a "Clone" opciót.
Az új VM esetében töltsük ki az IP Config opciót a Cloud-Init résznél, majd indíthatjuk is a gépet. Az első boot kicsit lassabb lesz és még nem feltétlenül lesz magyar a billentyűzet. Viszont hagyni kell egy kicsit gondolkozni, majd jó eséllyel reboot-ol magától a gép és utána jó lesz.
Utólagos teendők a VM-n:
A VM hostnevének a megváltoztatása ránk lesz bízva, mert sajnos azt nem szedi át a Proxmox-ból.
sudo nano /etc/hostname
sudo hostname --file /etc/hostname
illetve
sudo nano /etc/hosts
Teljes Cloud-init törlése (nem a csomagé). Ennek segítségével újra inicializálhatjuk a változtatásokat. Reboot kell utána.
sudo cloud-init clear --logs
Tárhely növelése. Ellőte a Proxmox-on meg kell növelni a disk mértetét: VM neve -> Hardware -> Hard Disk -> Disk Action -> Resize. Utána lehet kiadni ezt a parnacsot magán a VM-n.
sudo growpart /dev/sda 1
Cloud-init státusz lekérdezés:
cloud-init status
vagy:
cloud-init status --long
Logok ellenőrzése:
cat /var/log/cloud-init.log
Milyen modulok futottak le:
grep "Running module" /var/log/cloud-init.log
Mely modulok futnak milyen fázisban:
| Stage | Mit csinál |
|---|---|
| init | datasource + háló |
| config | config modulok |
| final | runcmd, packages |
cloud-init modules --mode=config
cloud-init modules --mode=final
Teljes futási idő elemzés:
cloud-init analyze
Ez megmutatja mi lassítja a bootot:
cloud-init analyze blame
Minden cloud-init adat listázása:
cloud-init query --all
Az egyedi snippet-hez köthető ellenőrzések:
sudo cloud-init query userdata
Felhasznált linkek:
https://pve.proxmox.com/wiki/Cloud-Init_Support (Proxmox VM Template)
https://superuser.com/questions/1022019/how-to-increase-size-of-an-ubuntu-cloud-image (Hasznos parancsok)
https://pve.proxmox.com/wiki/Resize_disks (Hasznos parancsok)
!Figyelem!
Mindenki a saját maga meglátása és megítélése szerint cselekedjen az itt olvasottakkal és látottakkal kapcsolatban. Felelőléssget NEM válalok semmi iránt amit leírok, ez szimplán csak annak a dokumentálása, ami számomra működött.
Senkit nem buzdítok arra, hogy illegális forrásból szerezzen be bármit is. A lehetséges adatvesztésért felelősséget nem vállalok. A SAJÁT CSELEKEDETEIDÉRT, SAJÁT MAGAD FELELSZ!