add hetzner-vm-provision flow and document it in README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ Aktuell enthalten:
|
||||
* `docker_stack_inventory_scan.yaml`
|
||||
* `build_select_options.py`
|
||||
* `linux_apt-upgrade.yaml`
|
||||
* `hetzner-vm-provision.yaml`
|
||||
* `.env.example`
|
||||
|
||||
Der erste Flow scannt mehrere Docker-Hosts per SSH, sucht nach Docker-Compose-Stacks und schreibt daraus eine Dropdown-Liste in den Kestra KV-Store.
|
||||
@@ -101,6 +102,42 @@ SSH_PRIVATE_KEY
|
||||
|
||||
---
|
||||
|
||||
### `hetzner-vm-provision.yaml`
|
||||
|
||||
Kestra-Flow zum Provisionieren einer Hetzner Cloud VM via Terraform — mit KI-gestützter Plan-Analyse und manuellem Approval-Gate.
|
||||
|
||||
**Namespace:** `hetzner`
|
||||
|
||||
Der Flow läuft in vier Phasen:
|
||||
|
||||
1. **Terraform Plan** — erstellt einen Plan für die neue VM (Ubuntu 24.04) im Hetzner-Datacenter; Terraform State wird im S3-Backend (Hetzner Object Storage) gespeichert
|
||||
2. **LLM-Analyse** — GPT-4o-mini fasst den Plan auf Deutsch zusammen und bewertet ob er sicher aussieht
|
||||
3. **Approval-Gate** — Kestra pausiert und wartet auf manuelle Freigabe
|
||||
4. **Terraform Apply / Abbruch** — bei Freigabe wird die VM erstellt und die IPv4-Adresse ausgegeben; bei Ablehnung wird die Execution abgebrochen
|
||||
|
||||
Der Flow erwartet folgende Eingaben:
|
||||
|
||||
| Input | Typ | Beschreibung |
|
||||
|---|---|---|
|
||||
| `vm_name` | STRING | Eindeutiger VM-Name, z.B. `dev-server-01` |
|
||||
| `server_type` | SELECT | `cx23` (2 vCPU / 4 GB) · `cx33` · `cx43` · `cx53` |
|
||||
| `location` | SELECT | `nbg1` · `fsn1` · `hel1` |
|
||||
| `team` | STRING | Label für die VM |
|
||||
|
||||
Benötigte Kestra Secrets:
|
||||
|
||||
```text
|
||||
HCLOUD_TOKEN
|
||||
SSH_KEY_NAME
|
||||
AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY
|
||||
TF_BACKEND_BUCKET
|
||||
TF_BACKEND_ENDPOINT
|
||||
OPENAI_API_KEY
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### `.env.example`
|
||||
|
||||
Beispiel-Datei für benötigte Umgebungsvariablen und Secrets.
|
||||
|
||||
Reference in New Issue
Block a user