264 lines
4.2 KiB
Markdown
264 lines
4.2 KiB
Markdown
# Tuxflotte – Architektur v2
|
||
|
||
## Vision
|
||
|
||
Tuxflotte ist eine distributionsunabhängige Provisionierungsplattform für Linux-Systeme.
|
||
|
||
Tuxflotte installiert **keine Betriebssysteme selbst**, sondern orchestriert den Installationsprozess, indem die nativen Installer der jeweiligen Distribution genutzt werden.
|
||
|
||
Dadurch bleibt Tuxflotte unabhängig von distributionsspezifischen Installationsdetails und profitiert von den offiziellen Installationsmechanismen.
|
||
|
||
---
|
||
|
||
# Architekturprinzipien
|
||
|
||
## 1. Klare Verantwortlichkeiten
|
||
|
||
### Provisioning-ISO
|
||
|
||
Verantwortlich für:
|
||
|
||
* Hardware erkennen
|
||
* Netzwerk initialisieren
|
||
* Provisioning-Server kontaktieren
|
||
* Profile laden
|
||
* Zielsystem auswählen
|
||
* Installationsparameter erzeugen
|
||
* nativen Installer starten
|
||
|
||
Nicht verantwortlich für:
|
||
|
||
* Partitionierung
|
||
* Dateisysteme
|
||
* Paketinstallation
|
||
* Bootloader-Konfiguration
|
||
|
||
Diese Aufgaben übernimmt der Installer der jeweiligen Distribution.
|
||
|
||
---
|
||
|
||
### Distribution-Installer
|
||
|
||
Beispiele:
|
||
|
||
* Fedora → Anaconda (Kickstart)
|
||
* Linux Mint → abhängig von der verwendeten Installer-Technologie
|
||
* Debian → Debian Installer (Preseed)
|
||
* Ubuntu → Subiquity (Autoinstall)
|
||
|
||
Verantwortlich für:
|
||
|
||
* Partitionierung
|
||
* Dateisysteme
|
||
* Betriebssysteminstallation
|
||
* Bootloader
|
||
* Benutzeranlage
|
||
* Erstkonfiguration des Systems
|
||
|
||
---
|
||
|
||
### Provisioning-Agent
|
||
|
||
Nach dem ersten Systemstart übernimmt der Agent:
|
||
|
||
* Registrierung am Provisioning-Server
|
||
* Inventarisierung
|
||
* Nachinstallation
|
||
* Konfigurationsmanagement
|
||
* Softwareverteilung
|
||
* Statusmeldungen
|
||
|
||
---
|
||
|
||
### Provisioning-Server
|
||
|
||
Der Server verwaltet:
|
||
|
||
* Profile
|
||
* Geräte
|
||
* Installationsvorlagen
|
||
* Richtlinien
|
||
* Inventar
|
||
* Provisioning-Aufträge
|
||
|
||
---
|
||
|
||
# Komponenten
|
||
|
||
```text
|
||
Provisioning Server
|
||
│
|
||
▼
|
||
Provisioning-Profile
|
||
│
|
||
▼
|
||
Provisioning-ISO
|
||
│
|
||
▼
|
||
Distribution-Installer
|
||
│
|
||
▼
|
||
Installiertes System
|
||
│
|
||
▼
|
||
Provisioning-Agent
|
||
│
|
||
▼
|
||
Provisioning-Server
|
||
```
|
||
|
||
---
|
||
|
||
# Installer-Workflow
|
||
|
||
## Phase 1
|
||
|
||
Preflight
|
||
|
||
* Hardware prüfen
|
||
* RAM
|
||
* CPU
|
||
* Firmware
|
||
* Netzwerk
|
||
|
||
---
|
||
|
||
## Phase 2
|
||
|
||
Inventarisierung
|
||
|
||
* Datenträger erkennen
|
||
* Netzwerkkarten
|
||
* Firmware
|
||
* Seriennummern
|
||
* Systeminformationen
|
||
|
||
---
|
||
|
||
## Phase 3
|
||
|
||
Profil
|
||
|
||
* Benutzer wählt Profil
|
||
|
||
oder
|
||
|
||
* Profil wird automatisch vom Server geliefert
|
||
|
||
---
|
||
|
||
## Phase 4
|
||
|
||
Backend
|
||
|
||
Passendes Backend wird geladen.
|
||
|
||
Beispiele:
|
||
|
||
* Fedora
|
||
* Mint
|
||
* Debian
|
||
* Ubuntu
|
||
|
||
---
|
||
|
||
## Phase 5
|
||
|
||
Installationsparameter erzeugen
|
||
|
||
Beispiele:
|
||
|
||
* Kickstart
|
||
* Autoinstall
|
||
* Preseed
|
||
|
||
---
|
||
|
||
## Phase 6
|
||
|
||
Nativen Installer starten
|
||
|
||
Ab diesem Zeitpunkt übernimmt die Distribution die eigentliche Installation.
|
||
|
||
---
|
||
|
||
## Phase 7
|
||
|
||
Erster Start
|
||
|
||
Provisioning-Agent startet automatisch.
|
||
|
||
---
|
||
|
||
# Profile
|
||
|
||
Jedes Profil beschreibt:
|
||
|
||
* Distribution
|
||
* Version
|
||
* Desktop
|
||
* Softwarepakete
|
||
* Benutzer
|
||
* Netzwerkeinstellungen
|
||
* Provisioning-Richtlinien
|
||
|
||
Beispiel:
|
||
|
||
```text
|
||
profiles/
|
||
fedora-workstation/
|
||
profile.json
|
||
|
||
mint-desktop/
|
||
profile.json
|
||
```
|
||
|
||
---
|
||
|
||
# Backend-Konzept
|
||
|
||
Jede Distribution besitzt ein eigenes Backend.
|
||
|
||
Beispiel:
|
||
|
||
```text
|
||
profiles/
|
||
|
||
fedora-workstation/
|
||
profile.json
|
||
installer.sh
|
||
kickstart.tpl
|
||
|
||
mint-desktop/
|
||
profile.json
|
||
installer.sh
|
||
autoinstall.tpl
|
||
```
|
||
|
||
Der Kern von Tuxflotte kennt keine distributionsspezifischen Details.
|
||
|
||
Er lädt ausschließlich das gewählte Profil und übergibt die Kontrolle an das passende Backend.
|
||
|
||
Dadurch kann Tuxflotte jederzeit um weitere Distributionen erweitert werden, ohne den Kern ändern zu müssen.
|
||
|
||
---
|
||
|
||
# Ziele
|
||
|
||
* distributionsunabhängig
|
||
* modular
|
||
* erweiterbar
|
||
* reproduzierbar
|
||
* automatisierbar
|
||
* servergesteuert
|
||
* Zero-Touch-fähig
|
||
* sowohl interaktiv als auch unbeaufsichtigt nutzbar
|
||
|
||
---
|
||
|
||
# Grundsatz
|
||
|
||
**Tuxflotte ist eine Provisionierungsplattform und kein eigener Linux-Installer.**
|
||
|
||
Die Installation erfolgt grundsätzlich mit den offiziellen Installationsmechanismen der jeweiligen Linux-Distribution.
|