Proxmox VE stworzenie i wykorzystanie szablonu systemu Ubuntu 22.04

Przeznaczenie szablonu maszyny wirtualnej Proxmox VE z systemem Ubuntu 22.04

Gotowy szablon maszyny wirtualnej Proxmox VE z systemem Ubuntu 22.04 może być wykorzystany wszędzie tam gdzie zachodzi potrzeba szybkiego przetestowania nowej aplikacji i usługi i szkoda jest tracić kilkanaście minut na instalację oraz konfigurację systemu od nowa. Gotowy szablon stanowi świetną bazę do dalszej modyfikacji ilości i wielkości vCPU, RAM, HDD pod konkretne potrzeby danej aplikacji. Bazowo mój szablon ubuntu-2204-template posiada następujące parametry:

  • 2 vCPU
  • 2 GB RAM
  • 16 GB HDD pod partycję / + 16 GB HDD pod partycję /var

Konfiguracja maszyny wirtualnej na potrzeby szablonu Proxmox VE z systemem Ubuntu 22.04

  • nadajemy nazwę naszemu szablonowi maszyny i wysokie niewykorzystywane id
  • nie wskazujemy żadnego obrazu ISO
  • wskazujemy typy Machine na Q35 i zaznaczamy Qemu Agent
  • usuwamy wszelkie dyski jakie proponuje domyślnie Proxmox
  • ustawiamy 2 sockets i 1 cores, type: host i zaznaczamy Enable NUMA
  • pamięć ustawiamy na domyślne 2048 MB
  • kartę sieciową na VirtIO
  • dodajemy CloudInit Drive do zakładki Hardware naszej maszyny w formacie qcow2
  • w zakładce Cloud-Init podajemy User i Password (będzie to pierwszy login w naszym systemie). Możemy też od razu wkleić tu zawartość naszego klucza publicznego np. z serwera Proxmox (cat ~/.ssh/id_rsa.pub) do SSH public key ale ja wolę stworzyć później osobnego użytkownika do logowania kluczem publicznym. Ten pierwszy będzie pozwalał na logowania jedynie lokalne z hasłem.
  • w zakładce Cloud-Init  IP Config ustawiamy wg. uznania DHCP albo static
  • na końcu klikamy na przycisk [ Regenerate image ]


Przygotowanie obrazu cloud image na serwerze Proxmox

Obrazy cloud image są dostępne na stronie https://cloud-images.ubuntu.com/releases/jammy/release/?ref=tcude.net

# na konsoli Proxmox
cd /tmp
wget https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64.img

# zmiana nazwy obrazu dysku z img na qcow2
mv ubuntu-22.04-server-cloudimg-amd64.img ubuntu-22.04-server.qcow2

# zmieniamy rozmiar dysku systemowego Linux np. na 16 GB
qemu-img resize ubuntu-22.04-server.qcow2 16G

# zaimportowanie do maszyny id 300 dysku ubuntu-22.04-server.qcow2 w datastore datastore-01
qm importdisk 300 ubuntu-22.04-server.qcow2 datastore-01

# włączenie dostępu z konsoli GUI Proxmox do maszyny wirtualnej
qm set 300 --serial0 socket --vga serial0

w zakładce Hardware naszej maszyny wirtualnej powinien pojawić się Unused Disk 0. Klikamy na nim przycisk [ Edit] i po zmianie kilku opcji dodajemy przyciskiem [ Add ]

Ustawiamy kolejność botowania wg. przykładu

i uruchamiamy maszynę wirtualną.

 

Dalsza konfiguracja szablonu maszyny wirtualnej z systemem Ubuntu 22.04

Teraz można wykonać wybrane w zależności od potrzeb kroki wg. instrukcji na stronie  Konfiguracja i konserwacja systemu Linux Ubuntu – IT Admin (vblog.ovh) a w szczególności:

  • aktualizacja systemu i instalacja qemu-guest- agent
  • ustawienie strefy czasowej i synchronizacji czasu
  • ustawienia swapa
  • ustawienia profilu tuned-adm
  • instalacja oprogramowania użytkowego i klientów sieciowych
  • ustalenie formatu historii poleceń
  • włączenie kolorowania składni nano
  • dostosowanie MOTD
  • usunięcie błędu no codec found

W moim przypadku dodałem jeszcze drugi dysk 16 GB na osobną partycję /var i przeprowadziłem migrację danych z obecnego /var na nowy dysk wg instrukcji na stronie ZoneMinder wymiana wirtualnego dysku zawierającego nagrania na podmontowany udział NFS z openmediavault – IT Admin (vblog.ovh).

Można dodać jeszcze drugiego użytkownika np. linusr do logowania wskazanym kluczem publicznym z serwera Proxmox

# z poziomu konsoli Proxmox
qm set 300 --sshkey ~/.ssh/authorized_keys --ipconfig0 ip=dhcp --ciuser linusr --cipassword 1234abcd.

Można też włączyć dodatkową opcję logowania hasłem z systemów, z których nie dodaliśmy klucza publicznego do szablonu

# z poziomu maszyny wirtualnej szablonu
# edycja konfiguracji serwera OpenSSH
sudo nano /etc/ssh/sshd_config

PasswordAuthentication yes

# restart usługi sshd
sudo systemctl restart sshd

Sprawdzamy czy możemy się zalogować do maszyny wirtualnej zarówno przez klucz publiczny (np. z konsoli Proxmox) jak i hasłem (z innego serwera Linux)

Można także na zakończenie z menu Hardware maszyny w konsoli GUI Proxmox usunąć Serial Port oraz zmienić Display na Default.

Po wszystkim należy wykonać poniższe kroki i wyłączyć maszynę wirtualną,

#zresetowanie machine-id
cat /dev/null > /etc/machine-id

cloud-init clean

# wyłączenie systemu
shutdown -h now

Dlaczego maszyna wirtualna powinna mieć unikalny identyfikator ?

Plik /etc/machine-id zawiera unikalny identyfikator maszyny lub systemu, w którym się znajduje. Jest używany przez różne usługi systemowe i aplikacje do identyfikacji konkretnego wystąpienia systemu operacyjnego działającego na komputerze. Unikalność zawartości pliku /etc/machine-id jest ważna z kilku powodów:

Identyfikacja i śledzenie: Identyfikator maszyny pomaga zidentyfikować i śledzić określony system w sieci lub środowisku rozproszonym. Umożliwia usługom i aplikacjom rozróżnianie różnych instancji lub węzłów. Jest to szczególnie ważne w scenariuszach, w których wiele systemów działa z tym samym systemem operacyjnym lub gdy instancje systemu muszą być jednoznacznie identyfikowane.

Bezpieczeństwo i autoryzacja: Niektóre mechanizmy związane z bezpieczeństwem i systemy kontroli dostępu opierają się na identyfikacji maszyny w celu autoryzacji. Dzięki unikalnemu identyfikatorowi komputera zasady dostępu i uprawnienia można powiązać z określonymi systemami. Pomaga zapobiegać nieautoryzowanemu dostępowi, zapewniając, że tylko zaufane systemy z ważnymi identyfikatorami uzyskują określone uprawnienia.

Zarządzanie konfiguracją: Identyfikatory maszyn mogą być używane w systemach zarządzania konfiguracją do zarządzania i wdrażania konfiguracji specyficznych dla systemu. Używając unikalnych identyfikatorów, narzędzia do zarządzania konfiguracją mogą kierować określone maszyny i stosować odpowiednie konfiguracje, zapewniając spójność i unikając konfliktów.

Diagnostyka i rozwiązywanie problemów: Identyfikatory maszyn mogą być pomocne w scenariuszach diagnostycznych i rozwiązywaniu problemów. Podczas badania problemów z systemem lub analizowania dzienników można użyć identyfikatora komputera do dokładnej identyfikacji systemu, którego to dotyczy. Umożliwia administratorom i personelowi pomocniczemu dokładne lokalizowanie i rozwiązywanie problemów.

Aby zachować unikalność pliku /etc/machine-id, identyfikator powinien zostać wygenerowany przy użyciu kryptograficznie bezpiecznego generatora liczb losowych podczas początkowej instalacji lub konfiguracji systemu. Jeśli identyfikator zostanie zduplikowany lub zmieni się nieoczekiwanie, może to prowadzić do nieporozumień, konfliktów i potencjalnych problemów z bezpieczeństwem. Dlatego ważne jest, aby zawartość pliku /etc/machine-id pozostała unikalna i stabilna dla każdego systemu.

Skonwertowanie wirtualnej maszyny z systemem Ubuntu 22.04 do szablonu (Convert to template)

Na wyłączonej  maszynie wirtualnej która ma być szablonem np. id 300 z menu podręcznego po kliknięciu prawym przyciskiem myszy wybieramy opcję Convert to template.


Używanie szablonu maszyny z systemem Ubuntu 22.04

Na wybranym szablonie z menu podręcznego wskazujemy opcję Clone i podajemy nową nazwę, id , wskazujemy Target storage  i format dysku (najlepiej qcow2) dla nowej maszyny tworzonej na podstawie szablonu.


Kroki do wykonania po uruchomieniu nowej maszyny wirtualnej z szablonu