Dlaczego wersja „cloud”, ponieważ jest zoptymalizowana na działanie w środowisku zwirtualizowanym, posiada wersję, która ma wycięte zbędne sterowniki dzięki czemu jest lżejsza i szybsza.
ssh root@proxmox.ip.adres
Ze strony debiana pobieramy interesującą nas wersję (generic lub genericcloud) na nasz serwer.
Jakie mamy „smaki” (rodzaje) obrazów:
– Azure, EC2 – to wersje pod tych usługodawców
– generic – wersja do środowiska wirtualnego (ogólnie)
– genericcloud – tak jak generic tylko bez sterowników do urządzeń fizycznych (jeżeli planujesz przepuszczać jakieś urządzenia np. GPU/Akcesoria USB wybierz wersję generic)
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
Następnie musimy utworzyć tymczasową wirtualną maszynę, na której uruchomimy i ewentualnie dodamy potrzebne komponenty.
qm create 9999 --name debian12-cloud --net0 virtio,bridge=vmbr0,tag=123 --scsihw virtio-scsi-pci --cpu x86-64-v2-AES --cores 2 --memory 2048
qm set 9999 -serial0 socket
- qm create 9999 – id maszyny
- –name debian12-cloud nazwa maszyny
- –net0 virtio,bridge=vmbr0,tag=123 – sieciówka (lan) używa sterownika virtio (pełna przepustowość) i jest wpięta w most vmbr0 w VLANie 123
- –scsihw virtio-scsi-pci – sterownik dysku ustawiony na virtio-scsi-pci
- –cpu x86-64-v2-AES – ustawiamy typ procesora (można pominąć)
- –cores 2 – 2 rdzenie
- –memory 2048 – 2GB RAMu
- –serial0 socket – dodaj port szeregowy
Ustawiamy dysk z partycją boot:
qm set 9999 --scsi0 local-lvm:0,discard=on,ssd=1,format=qcow2,import-from=/root/debian-12-genericcloud-amd64.qcow2
qm disk resize 9999 scsi0 8G
qm set 9999 --boot order=scsi0
- qm set 9999 – ustawiamy parametry dla VM o id 9999
- –scsi0 local-lvm:0,discard=on,ssd=1,format=qcow2,import-from=/root/debian-12-genericcloud-amd64.qcow2 – importujemy pobrany obraz, wskazujemy że jest to obraz dyski SSD i wskazujemy, że ta maszyna ma przechowywać SWÓJ dysk w zbiorze local-lvm (jest to domyślny zasób)
- qm disk resize 9999 scsi0 8G – powiększamy dysk VM o id 9999 do wielkości 8GB (po zaimportowaniu miał 2GB)
- qm set 9999 –boot order=scsi0 – ustawiamy kolejność bootowania dysków
Ustawmy cloud-init (integracja z zakładką Cloud-Init w proxmoxie) oraz włączmy usługę agenta:
qm set 9999 --ide2 local-lvm:cloudinit
qm set 9999 --agent enabled=1
Teraz trochę magi dzięki cloud-init:
nano /var/lib/vz/snippets/cloud-config.yaml
#cloud-config
timezone: 'Europe/Warsaw'
package_update: true
package_upgrade: true
package_reboot_if_required: true
packages:
- qemu-guest-agent
users:
- name: myusername
lock_passwd: False
passwd: __HASH FROM mkpasswd -m sha-512___
groups: [adm, audio, cdrom, dialout, dip, floppy, netdev, plugdev, sudo, video]
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZ....
- ssh-rsa AAAAB......
runcmd:
- sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config
- echo "PermitRootLogin no" >> /etc/ssh/sshd_config
- sed -i '/PubkeyAuthentication/d' /etc/ssh/sshd_config
- echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
- systemctl restart sshd
datasource_list: [NoCloud, None]
datasource:
NoCloud:
fs_label: system-boot
nano /var/lib/vz/snippets/cloud-network.yaml
version: 1
config:
- type: physical
name: ens18
subnets:
- type: dhcp4
- type: nameserver
address:
- '8.8.8.8'
qm set 9999 --cicustom "user=local:snippets/cloud-config.yaml,network=local:snippets/cloud-network.yaml"
Finalnie, przygotowujemy szablon z tak przygotowanej maszyny:
qm template 9999