Definicja
LXC (Linux Containers) to technologia lekkiej wirtualizacji na poziomie systemu operacyjnego, umożliwiająca uruchamianie wielu odseparowanych środowisk Linux na jednym jądrze systemowym.
W przeciwieństwie do klasycznych maszyn wirtualnych:
nie emuluje pełnego sprzętu,
nie wymaga osobnego jądra systemu,
zużywa znacznie mniej zasobów,
uruchamia się niemal natychmiastowo.
W środowisku Proxmox VE kontenery LXC są wykorzystywane do:
uruchamiania mikroserwisów,
hostowania aplikacji backendowych,
serwerów proxy, API, workerów CI,
środowisk testowych i stagingowych.
✅ LXC to rozwiązanie:
szybsze niż VM,
tańsze zasobowo,
idealne do infrastruktury jako kod (IaC).
W projekcie iac-proxmox kontenery LXC są:
w pełni zarządzane przez OpenTofu ,
tworzone automatycznie z gotowych template,
konfigurowane przez moduł:
modules/proxmox-container
Każdy kontener posiada:
jednoznaczny CT ID ,
przypisany node , storage , pool ,
zdefiniowane zasoby CPU, RAM i dysk,
użytkownika technicznego,
klucz SSH.
Definicje kontenerów znajdują się w katalogu:
Każdy kontener posiada osobny plik:
Przykład:
✅ Zapewnia to:
czytelność,
pełną niezależność kontenerów,
łatwą kontrolę zmian w Git.
module "ct01011" {
source = "" git@gitlab . com : pl . rachuna-net / artifacts / opentofu / proxmox - container . git ? ref = v1 . 0 . 2 ""
hostname = "ct01011.rachuna-net.pl"
description = "example-service"
node_name = "pve-s1"
ct_id = 1011
pool_id = "web-proxy"
start_on_boot = true
tags = [ "example" , "ubuntu" ]
cpu_cores = 2
memory = { dedicated = 2048 , swap = 1024 }
disk = { storage_name = "local-lvm" , disk_size = 32 }
operating_system = {
template_file = "local:vztmpl/ubuntu-24.04.tar.zst"
type = "ubuntu"
}
user_account = {
username = "techuser"
password = "change-me"
public_ssh_key = "ssh-ed25519 AAAA..."
}
}
Parametr Opis hostnamePełna nazwa DNS kontenera descriptionOpis techniczny usługi node_nameWęzeł Proxmoxa ct_idUnikalne ID kontenera pool_idPool logiczny start_on_bootAutostart po restarcie tagsTagi administracyjne
cpu_cores = 2
memory = {
dedicated = 2048
swap = 1024
}
disk = {
storage_name = "local-lvm"
disk_size = 32
}
✅ Pozwala to precyzyjnie sterować:
obciążeniem hosta,
wydajnością usług,
dynamicznym skalowaniem.
operating_system = {
template_file = "local:vztmpl/ubuntu-24.04.tar.zst"
type = "ubuntu"
}
✅ Template musi być:
wcześniej pobrany przez containers_templates,
dostępny na storage Proxmoxa.
user_account = {
username = "techuser"
password = "change-me"
public_ssh_key = "ssh-ed25519 AAAA..."
}
✅ Tworzone automatycznie:
konto techniczne,
dostęp SSH,
możliwość wyłączenia logowania root.
Jeżeli dane dostępowe pochodzą z Vault, zamiast jawnych wartości:
user_account = {
username = data.vault_kv_secret_v2.ct.data[ "username" ]
password = data.vault_kv_secret_v2.ct.data[ "password" ]
public_ssh_key = data.vault_kv_secret_v2.ct.data[ "ssh_key" ]
}
✅ Pozwala to:
usunąć hasła z repozytorium,
rotować dane dostępowe,
centralnie kontrolować dostęp.