Skip to content

Architektura rozwiązania

Opentofu

Opentofu to narzędzie typu Infrastructure as Code (IaC), które umożliwia definiowanie, provisionowanie i zarządzanie infrastrukturą za pomocą plików konfiguracyjnych. Dzięki temu narzędziu możesz w sposób deklaratywny opisywać zasoby, takie jak serwery, sieci czy usługi w chmurze, a następnie automatycznie je tworzyć, modyfikować i usuwać, zapewniając spójność środowisk.

Opentofu

Repozytorium: iac-proxmox

Repozytorium zawiera kompletną konfigurację Infrastructure as Code (IaC) umożliwiającą automatyczne, deklaratywne zarządzanie infrastrukturą kontenerową i wirtualną w środowisku Proxmox VE.

Repozytorium iac-proxmox zawierające infrastrukturę jako kod (IaC) do zarządzania środowiskiem Proxmox przy użyciu OpenTofu. Umożliwia automatyzację tworzenia, konfiguracji i utrzymania zasobów Proxmox, takich jak LXC i VM.


---
config:
  theme: dark
  layout: elk
  look: classic
---
flowchart LR
 subgraph Opentofu["Opentofu"]
        iac_proxmox["iac-proxmox"]
  end
    iac_proxmox -- tofu apply --> n16["proxmox<br>(pve-s1)"] & n22["proxmox<br>(pve-s3)"] & n23["proxmox<br>(pve-s4)"]
    n20["proxmox-container"] --> iac_proxmox
    n21["proxmox-vm"] --> iac_proxmox

    iac_proxmox:::Pine
    n20:::Peach
    n21:::Peach
    Opentofu:::Peach
    classDef Sky stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
    classDef Aqua stroke-width:1px, stroke-dasharray:none, stroke:#46EDC8, fill:#DEFFF8, color:#378E7A
    classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
    classDef Ash stroke-width:1px, stroke-dasharray:none, stroke:#999999, fill:#EEEEEE, color:#000000
    classDef Peach stroke-width:1px, stroke-dasharray:none, stroke:#FBB35A, fill:#FFEFDB, color:#8F632D
    classDef Pine stroke-width:1px, stroke-dasharray:none, stroke:#254336, fill:#27654A, color:#FFFFFF
    style Opentofu fill:transparent,color:none
    click iac_proxmox "https://gitlab.com/pl.rachuna-net/infrastructure/pve-rachuna-net/iac-proxmox"
    click n20 "https://gitlab.com/pl.rachuna-net/artifacts/opentofu/proxmox-container"
    click n21 "https://gitlab.com/pl.rachuna-net/artifacts/opentofu/proxmox-vm"

Poniżej znajduje się lista projektów wchodzących w skład Infrastructure as a Code.

projectversiondescription
iac-proxmoxIAC do zarządzania środowiskiem Proxmox.
proxmox-containerModuł opentofu do zarządzanie kontenerami LXC (CT) w środowisku Proxmox VE.
proxmox-vmModuł Opentofu do zarządzanie kontenerami VM w środowisku Proxmox VE.

Założenia projektów Infrastructure as a Code

Section titled “Założenia projektów Infrastructure as a Code”

Infrastructure as Code (IaC) to podejście do zarządzania infrastrukturą IT, w którym:

  • zasoby są definiowane i utrzymywane za pomocą kodu, a nie manualnych operacji.
  • automatyczne tworzenie, aktualizowanie oraz usuwanie zasobów w chmurze i środowiskach lokalnych, na podstawie deklaratywnych plików konfiguracyjnych.

Wdrażając podejście IaC z użyciem OpenTofu, należy przyjąć szereg kluczowych założeń projektowych, które zapewniają bezpieczeństwo, skalowalność oraz powtarzalność środowisk infrastrukturalnych.

Projekt umożliwia:

  • tworzenie kontenerów LXC i maszyn wirtualnych w sposób powtarzalny,
  • zarządzanie template systemów operacyjnych,
  • pełną kontrolę konfiguracji przez Git,
  • integrację z Vault w zakresie sekretów,
  • eliminację ręcznej konfiguracji przez interfejs graficzny.

Dlaczego LXC zamiast klasycznych maszyn wirtualnych?

Section titled “Dlaczego LXC zamiast klasycznych maszyn wirtualnych?”

Kontenery LXC są w tym projekcie podstawowym mechanizmem uruchamiania usług, ponieważ:

  • uruchamiają się w kilka sekund,

  • zużywają znacznie mniej zasobów niż VM,

  • nie wymagają osobnego jądra systemu,

  • idealnie sprawdzają się dla:

    • mikroserwisów,
    • reverse proxy,
    • workerów CI,
    • systemów backendowych.

Maszyny wirtualne są stosowane wyłącznie tam, gdzie:

  • wymagane jest osobne jądro,
  • potrzebna jest pełna izolacja sprzętowa.

Uproszczona struktura repozytorium:

iac-proxmox/
├── containers_templates/   # Szablony LXC
├── machines/               # Definicje kontenerów LXC i VM (ctXXXXX.tf)
├── _locals.tf              # Wspólne zmienne (storage, node, pool)
└── main.tf

Projekt iac-proxmox jest w pełni zintegrowany z Vault, który przechowuje m.in.:

  • hasła root,
  • dane użytkowników technicznych,
  • klucze SSH,
  • adresy IP.

Dzięki temu:

  • ❌ dane dostępowe nie trafiają do repozytorium,
  • ✅ możliwa jest rotacja sekretów,
  • ✅ dostęp do infrastruktury jest audytowalny.