Tworzenie szablonu VM (proxmox) z Debiana w wersji cloud

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*