Zarządzanie LXC w Proxmox za pomocą OpenTofu

Nie ma nic bardziej satysfakcjonującego niż kliknięcie tofu apply i zobaczenie, jak Proxmox sam pobiera template LXC, tworzy kontenery i konfiguruje dostęp. Poniżej opisuję, jak wygląda ten proces w moim repozytorium iac-proxmox i na co warto zwrócić uwagę, jeśli chcesz to odwzorować u siebie.
Dlaczego LXC do IaC w Proxmox?
Section titled “Dlaczego LXC do IaC w Proxmox?”- Kontenery startują w sekundy i zużywają minimalne zasoby w porównaniu z pełnymi VM.
- Wspólny kernel i brak emulacji sprzętu sprawiają, że świetnie nadają się do mikroserwisów, proxy, workerów CI czy środowisk testowych.
- Dzięki OpenTofu cały cykl życia kontenera (tworzenie, aktualizacja, usuwanie) jest wersjonowany w Git i odtwarzalny na innym hoście.
Jak zorganizowałem repozytorium iac-proxmox?
Section titled “Jak zorganizowałem repozytorium iac-proxmox?”Wydzielam dwa kluczowe katalogi:
containers_templates/– zasoby odpowiedzialne za pobieranie obrazów LXC do magazynu Proxmoxa.machines/– pojedyncze plikictXXXXX.tf, każdy opisuje wygląd kontenera.
Krok po kroku
Section titled “Krok po kroku”-
Utworzenie repozytoriów
Section titled “Utworzenie repozytoriów”- Definicja repozytorium pl.rachuna-net/artifacts/opentofu/proxmox-container
- Definicja repozytorium pl.rachuna-net/artifacts/opentofu/proxmox-vm
- Definicja repozytorium pl.rachuna-net/infrastructure/pve-rachuna-net/iac-proxmox
-
Pobieranie container templates
Section titled “Pobieranie container templates”Szablon Ubuntu 24.04 LTS pobieram wprost z repozytorium Proxmoxa:
containers_templates/ubuntu24-10.tf
Kluczowe jest ustawienie
checksumichecksum_algorithm– mam pewność, że obraz nie został uszkodzony, a plan w razie różnic przerwie się na weryfikacji. -
Tworzenie kontenera – minimalny moduł
Section titled “Tworzenie kontenera – minimalny moduł”Każdy kontener to osobny moduł z jednoznacznym
ct_id:Najważniejsze parametry, które zawsze ustawiam:
Parametr Co robi hostnamePełna nazwa DNS kontenera node_nameWęzeł Proxmoxa, na którym zostanie utworzony ct_idStałe ID kontenera – ułatwia śledzenie i logging pool_idPrzynależność do puli logicznej (np. web, db, proxy) start_on_bootAutostart po restarcie noda cpu_cores/memory/diskTwarda kontrola zasobów hosta operating_system.template_fileŚcieżka do wcześniej pobranego template user_accountAutomatycznie zakładane konto i klucz SSH -
Wydanie zmian
Section titled “Wydanie zmian”iac-proxmox v1.1.0