Χαιρετώ την παρέα του e-arena.gr!
Σήμερα θα μάθουμε πως να κάνουμε templates VM, μόνο σε linux όμως, για εύκολη κατασκευή VM με kernel που να είναι βελτιστοποιημένος για cloud!
Για αρχή θα πρέπει να δούμε την ή τις διανομή/ές που μας ενδιαφέρει, στο άρθρο θα δώσω για debian 12 και ubuntu 22.04, αλλά οι αρχές είναι ίδιες και με άλλες διανομές που παρέχουν cloud images!
Οπότε πάμε να δούμε το Debian 12 και το Ubuntu στις σελίδες των developers τους.
Καλό θα ήταν να μην κοιτάμε σελίδες τρίτων για downloads γιατί δεν ξέρουμε τι μπορεί να έχουν πειράξει, αν υπάρχει λόγος και ξέρουμε τι κάνουμε οκ, διαφορετικά μένουμε στις πηγές αυτές που δίνω πιο πάνω.
Θα πάμε στο shell του proxmox host μας ή θα μπούμε σε αυτόν με SSH και θα δώσουμε τις παρακάτω εντολές για να κάνουμε το debian 12 template.
2) qm create 8000 –memory 2048 –core 2 –name debian12-cloud –net0 virtio,bridge=vmbr0 –ostype l26
3) qm importdisk 8000 debian-12-genericcloud-amd64-20240211-1654.qcow2 local-zfs
4) qm set 8000 –scsihw virtio-scsi-pci –scsi0 local-zfs:vm-8000-disk-0
5) qm set 8000 –ide2 local-zfs:cloudinit
6) qm set 8000 –boot c –bootdisk scsi0
7) qm set 8000 –serial0 socket –vga serial0
8) qm set 8000 -ipconfig0 ip=dhcp
9) Config the vm and cloudinit
10) qm template 8000
Και να το αναλύσουμε λίγο το τι κάνει το κάθε τι,
Εντολή 1η, κατεβάζει στο directory που είμαστε αυτή την στιγμή στον proxmox host (λογικά /root/ εκτός και αν έχετε αλλάξει dir) το cloud image του debian που μας το δίνει σε μορφή .qcow2 το παραπάνω link είναι το νεότερο την μέρα που έγραψα το άρθρο, σε εσάς ενδέχεται να διαφέρει η ημερομηνία ή ακόμα αν έχει βγει debian 13 και η όλη διαδρομή! Προσαρμόστε ανάλογα!
Εντολή 2η, κάνει δημιουργία ένα VM με το ID 8000, αυτό έχω εγώ για το debian σε εμένα, εσείς θα επιλέξετε κάποιο κενό που να έχει νόημα για εσας σαν αριθμός και θα αλλάξετε αντίστοιχα και στις υπόλοιπες εντολές τον αριθμό αυτόν! Του δίνω 2gb ram, αν θέλετε παραπάνω βάλτε ότι θέλετε πχ για 4gb είναι 4096 (γενικά το νούμερο σε GB που θέλουμε επί 1024), του έδωσα όνομα debian12-cloud και κάρτα δικτύου, ενώ το ostype l26 είναι το τι λειτουργικό είναι, κοινως linux kernel 2~6.
Εντολή 3η, να μην το λέω συνέχεια αν το 8000 σε εσάς είναι κάτι άλλο, το αλλάζετε και εδώ και σε όλα τα παρακάτω! θα κάνει import το αρχείο που κατεβάσαμε στην 1η εντολή στο vm 8000, αν το link σας στο 1ο αλλάζει, θα πρέπει να αλλάξετε το όνομα του αρχείου βάση του ονόματος που πήρατε από το link. Και τέλος είναι σε ποιο δίσκο στο σύστημα μας θα μπει, σε μένα το File System είναι ZFS οπότε ο δίσκος ονομάζεται local-zfs, αυτό θα χρειαστεί να το δείτε και στα άλλα βήματα πιο κάτω.
Εντολή 4η, περνάμε έναν controller για δίσκους στο VM και εδώ πάλι βλέπουμε το local-zfs και το vm id. Τα αλλάζετε ανάλογα του τι έχετε και πάνω.
Εντολή 5η, περνάμε ένα cloud-init drive στο σύστημα ως ide2 και πάλι κοιτάμε το local-zfs αν έχουμε κάτι άλλο, το αλλάζουμε αντίστοιχα!
Εντολή 6η, περνάμε τον δίσκο ως boot πάνω στον controller.
Εντολή 7η, ορίζουμε την κάρτα γραφικών του VM ως serial0, σε αυτά τα vm που είναι μόνο terminal, δεν έχει νόημα να πάμε σε κάτι άλλο. Το αφήνουμε ως έχει.
Εντολή 8η, ορίζουμε εδώ το τι IP θα παίρνει το σύστημα, εδώ του έχω βάλει DHCP
Εντολή 9η και φαρμακερή! Εδώ δεν κάνουμε copy/paste αλλά πρέπει να παραμετροποιήσουμε μέσα από το Proxmox στο VM αυτό που έχουμε κάνει την επιλογή cloud-init:
Και βάζουμε τα login info που θέλουμε, πχ να είναι ο default user ο χρήστης root, των κωδικό του χρήστη μας, το SSH key μας και ακόμα την IP. Αφού περάσουμε το τι θέλουμε να έχει σαν default το template μας, θα πάμε στην τελευταία εντολή. Μπορούμε να τα αλλάξουμε και πιο μετά αυτά, ακόμα και όταν κάνουμε κλώνο το templete σε VM απλά θα πρέπει να πατήσουμε το κουμπί “Regenerate Image” μετά από κάθε τέτοια αλλαγή.
Να μην ξεχάσουμε να κάνουμε και ένα resize τον δίσκο του VM γιατί αλλιώς θα έχει ίσα ίσα χώρο απλά για να ανοίξει και δεν θα κάνει updates ή installs.
Αφού λοιπόν τελειώσουμε και με το Cloud-Init πάμε και στην τελευταία εντολή.
Εντολή 9η, εδώ λοιπόν θα πάρει το proxmox όλα τα παραπάνω και θα μας κάνει ένα template με το ID που επιλέξαμε και το όνομα που δώσαμε και ότι γενικά ρυθμίσαμε να έχει.
Από εδώ και πέρα απλά κάνουμε click στο template και πατάμε clone, και του λέμε να είναι πάντα full clone και όχι linked clone
Και έτσι τόσο εύκολα και απλά από εδώ και πέρα έχουμε ένα νέο debian 12 vm!
Για το ubuntu θα δώσω τις εντολές παρακάτω αλλά δεν θα κάνω ανάλυση όπως και πιο πάνω μιας που το μόνο που αλλάζει είναι το VM(template)ID, το link που κατεβάζουμε, το όνομα που έχει το αρχείο και το όνομα του ίδiου του VM(template). Και με τον ίδιο τρόπο μπορείτε να κάνετε templates και άλλες διανομές που παρέχουν cloud images
1) wget https://cloud-images.ubuntu.com/jammy/20240207/jammy-server-cloudimg-amd64.img
2) qm create 8010 –memory 2048 –core 4 –name ubuntu22.04.3-cloud –net0 virtio,bridge=vmbr0 –ostype l26
3) qm importdisk 8010 jammy-server-cloudimg-amd64.img local-zfs
4) qm set 8010 –scsihw virtio-scsi-pci –scsi0 local-zfs:vm-8010-disk-0
5) qm set 8010 –ide2 local-zfs:cloudinit
6) qm set 8010 –boot c –bootdisk scsi0
7) qm set 8010 –serial0 socket –vga serial0
8)qm set 8010 -ipconfig0 ip=dhcp
9) Config the vm and cloudinit
10) qm template 8010