Proxmox Cloud-Init – automatyzacja maszyn wirtualnych krok po kroku
Cloud-Init to jedno z najpotężniejszych, a jednocześnie często niedocenianych narzędzi dostępnych w Proxmox VE. Pozwala w pełni zautomatyzować konfigurację maszyn wirtualnych już przy ich pierwszym uruchomieniu, bez ręcznego logowania się, klikania w instalator czy powtarzania tych samych czynności na każdej VM.
Jeśli budujesz homelab, środowisko testowe (np. XDR, SIEM, Wazuh, Zabbix) albo infrastrukturę pod DevOps / SOC, Cloud-Init znacząco przyspieszy Twoją pracę i ograniczy liczbę błędów.
Czym jest Cloud-Init?
Cloud-Init to standardowy mechanizm inicjalizacji systemów Linux (i częściowo Windows), który:
- wykonuje się tylko przy pierwszym starcie VM
- pobiera konfigurację z hypervisora lub chmury
- automatycznie konfiguruje system operacyjny
W Proxmox Cloud-Init działa lokalnie, bez chmury publicznej – hypervisor pełni rolę dostawcy metadanych.
Co Cloud-Init potrafi skonfigurować?
- nazwę hosta
- użytkowników i hasła
- klucze SSH
- sieć (DHCP lub statyczną)
- pakiety i aktualizacje
- pliki konfiguracyjne
- skrypty uruchamiane przy starcie
- strefę czasową, locale
- serwisy systemowe
Dlaczego Cloud-Init w Proxmox jest tak ważny?
Bez Cloud-Init:
- każda VM wymaga ręcznej konfiguracji
- łatwo o niespójności
- skalowanie środowiska jest czasochłonne
Z Cloud-Init:
- VM jest gotowa w kilkanaście sekund
- każda instancja jest identyczna
- możesz tworzyć i usuwać maszyny „na żądanie”
To dokładnie to, czego potrzebujesz w:
- testach bezpieczeństwa
- labach XDR / SIEM
- środowiskach CI/CD
- klastrach HA
Jak działa Cloud-Init w Proxmox?
Schemat działania jest prosty:
- Tworzysz specjalny obraz systemu z obsługą Cloud-Init
- Proxmox:
- tworzy dodatkowy dysk
cloudinit - przekazuje do VM metadane (user-data, network-data)
- tworzy dodatkowy dysk
- Podczas pierwszego bootu:
- Cloud-Init odczytuje dane
- wykonuje konfigurację
- Po zakończeniu:
- VM działa jak normalny serwer
Obsługiwane systemy operacyjne
Najlepiej wspierane:
- Ubuntu Server
- Debian
- AlmaLinux / Rocky Linux
- CentOS Stream
Częściowe wsparcie:
- Windows Server (Cloudbase-Init)
Przygotowanie maszyny wirtualnej
Pierwszym krokiem jest stworzenie maszyny wirtualnej, odpowiednia jej konfiguracja oraz przekonwertowanie na template (szablon). Do dzieła!
Kliknij na Create VM, nadaj unikatowy numer VM ID: oraz Name: (nazwę maszyny), kliknij Next

W sekcji OS, zaznacz Do not use any media (napęd DVD nie będzie nam potrzebny), kliknij Next

W sekcji Machine: wybierz q35, następnie w BIOS wybierz OVMF (UEFI) i w EFI Storage: wybierz local-lvm. Kliknij Next

W sekcji Disk, usuń scsi0, klikając na ikonkę kosza (dysk dodamy później z obrazem cloud init). Kliknij Next

W sekcjach CPU, Memory oraz Network, nic nie zmieniamy (chyba że potrzebujesz ustawić od razu większe zasoby), po utworzeniu szablonu i utworzeniu nowej maszyny, będziesz mógł zmieniać dowolnie wymienione zasoby. W sekcji Confirm, upewnij się że Start after created jest odznaczone. Kliknij Finish i poczekaj na utowrzenie maszyny.

Wybierz nowo utworzoną maszynę. Przejdź do Hardware. Kliknij na Add, wybierz Cloudinit Drive

W sekcji Storage: wybierz local-lvm i kliknij Add

Zaznacz CD/DVD Drive (ide2), usuń napęd DVD klikając na Remove, wyskoczy okno z potwirdzeniem, kliknij Yes

Przygotowanie obrazu Cloud-Init
Pobranie oficjalnego obrazu
Przykład dla Ubuntu Server:
Przejdź do głównego Noda swojego serwera Proxmox, Kliknij na Shell, w terminalu wpisz komendę, potwierdź enterem by pobrać obraz:
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

Następnie konwertujemy noble-server-cloudimg-amd64.img na ubuntu-cloudinit.qcow2 komendą:
mv noble-server-cloudimg-amd64.img ubuntu-cloudinit.qcow2

Teraz zmieniamy rozmiar obrazu (wielkość 30G zmień na wielkość dysku na taki jaki Tobie odpowiada), komendą:
qemu-img resize ubuntu-cloudinit.qcow2 30G

Następnym krokiem jest zaimportowanie dysku do utworzonej maszyny wirtualnej. Wartość 300 zmień na numer odpowiadający utworzonej maszynie wirtualnej. Komenda:
qm importdisk 300 ubuntu-cloudinit.qcow2 local-lvm

Po zaimportowaniu obrazu pozostaje ustawienie portu VGA, komendą (ponownie zmień wartość 300 na numer Twojej maszyny):
qm set 300 --serial0 socket --vga serial0

Przekształcenie maszyny wirtualnej na Template (szablon)
Wybierz utworzoną maszynę wirtualną, przejdź do sekcji Hardware, kliknij dwukrotnie na Unused Disk 0

Jeśli serwer Proxmox jest zainstalowany na dysku SSD lub NVME, zaznacz SSD emulation: oraz Discard: jeśli nie kliknij Add

Przejdź do sekcji Options, kliknij dwukrotnie na Boot Order, wybierzemy utworzony dysk Cloud init, by system automatycznie wystartował z tego dysku

Odznacz net0 i zaznacz sci0, kliknij OK

Przekonwertuj maszynę wirtualną na Template (szablon). Kliknij prawym myszy na maszynę, wybierz Convert to template, wyskoczy okno potwierdź klikając na Yes. Po chwili utworzy się szablon.

Ostatnim krokiem jest skonfigurowanie użytkownika i hasła do logowania oraz ustawienie adresacji IP do połączenia z siecią/internetem. Kliknij na nowo utworzony szablon i przejdź do sekcji Cloud-Init. Klikając dwukrotnie na User (podaj nazwę użytkownika), tak samo ustaw Password (hasło do logowania), potwierdzaj wybór klikając OK.
Kliknij dwukrotnie na IP Config (net0), skonfiguruj IPv4. Jeśli wolisz zaznacz DHCP by automatycznie pobierać adres IP lub zaznacz Static i ustaw ręcznie IPv4/CIDR: (adres IP Twojej sieci) oraz Gateway (IPv4): (bramę sieciową). Kliknij OK

Tworzenie pierwszej maszyny wirtualnej z Cloud Init w Proxmox
Kliknij prawym przyciskiem myszy na szablon i kliknij Clone

Nadaj unikatowy numer VM ID: oraz unikatową nazwę maszyny Name: kliknij Clone

Przejdź do nowo utworzonej maszyny wirtualnej, kliknij Start a następnie kliknij Console by przejść do konsoli maszyny. Rozpocznie się automatycznie instalacja oraz aktualizacja maszyny wirtualnej dzięki Cloud Init.

Po kilku minutach (zależy od prędkości Twojego Internetu), maszyna zostanie zainstalowana, zauważysz to po dwóch zielonych napisach OK, naciśnij Enter. Możesz się zalogować ustawionym loginem i hasłem.

Gotowe! Po zalogowaniu możesz korzystać z świeżo zainstalowanego systemu Ubuntu server dzięki Cloud init !

Podsumowanie artykułu
Artykuł opisuje wykorzystanie Cloud-Init w Proxmox VE jako mechanizmu automatyzującego konfigurację maszyn wirtualnych podczas ich pierwszego uruchomienia. Wyjaśniono, czym jest Cloud-Init, jakie elementy systemu może konfigurować (m.in. użytkowników, sieć, pakiety, klucze SSH) oraz dlaczego znacząco ułatwia budowę spójnych i skalowalnych środowisk, takich jak homelaby, laby bezpieczeństwa czy infrastruktury DevOps/SOC.
Przedstawiono zasadę działania Cloud-Init w Proxmox, listę wspieranych systemów operacyjnych oraz szczegółowy proces przygotowania maszyny wirtualnej i obrazu cloud-image, jego importu, konfiguracji oraz konwersji VM do szablonu. Artykuł krok po kroku pokazuje także, jak skonfigurować użytkownika i sieć w sekcji Cloud-Init oraz jak na podstawie szablonu tworzyć nowe maszyny wirtualne, które po uruchomieniu automatycznie instalują i konfigurują system operacyjny.
Bezpłatne warsztaty: NMAP – Skanowanie Urządzeń i Portów w Sieci
Dowiedz się, jak wykrywać urządzenia w sieci, skanować porty i identyfikować usługi przy użyciu narzędzia NMAP. Poznasz podstawy skanowania, analizę wyników oraz praktyczne zastosowania w audycie bezpieczeństwa i testach penetracyjnych.
Środa, 18 marca o 14:00

