Mehr Hintergrundinfos in README

This commit is contained in:
Frank Agerholm 2026-03-12 23:00:58 +01:00
commit eba4b5e098
No known key found for this signature in database

View file

@ -1,5 +1,66 @@
# Installation von VMs bei Hetzner # Installation von VMs bei Hetzner
## Grundlagen
Mit Opentofu wurde von Terraform geforkt, als das Terraform die Lizenz änderte
und Terraform damit vom OpenSource-Gedanken etwas abrückte.
Das Grundkonzept besteht darin, dass in über die Konfigurationssprache "hcl"
die Infrastruktur beschrieben wird, die man einrichten möchte.
Die Infrastruktur-Beschreibungen werden in eine oder mehrere Dateien mit der
Dateiendung '.tf' gespeichert.
In den Dateien werden die Resourcen beschrieben. Hier einmal ein Beispiel
für die Resource, die einen ssh-Publickey enthält:
```hcl
resource "hcloud_ssh_key" "default" {
name = "treff-key"
public_key = file("~/.ssh/id_ed25519.pub")
}
```
"resource" leitet dabei einen Block für eine einzelne Resource ein.
"hcloud_ssh_key" ist der Resource-Typ. In diesem Fall ein ssh-Key für die
Hetzner-Cloud. Nach dem Resource-Typ richtet sich, welche eigenenschaften diese
Resource haben kann.
"default" ist der Tofu name für diese Resource. Diese muss pro Resource-Typ
eindeutig sein.
An anderer Stelle kann auf diese Resource verwiesen werden, wenn man in der
Form "hcloud_ssh_key.default.public_key" darauf verweis.
Als Attribut "name" wird der Name konfiguriert, über den diese Key in der
Hetzner Cloud-Konsole angezeigt wird.
"public_key" enthält den öffentlichen Teil des ssh-Schlüssels.
Mit "file(...)" wird in diesem Beispiel der Inhalt einer lokalen Datei
eingelesen.
Außer "resource" gibt es noch weitere Objekt in den Tofu-Dateien.
Mit "variable" wird eine Variable definiert. Mit "output" kann man am Ende
einer Ausführung bestimmte Variablen ausgeben lassen.
Der große Unterschied zu anderen Ansätzen wie z.B. Ansible ist, dass Tofu
den Status der angelegten Resourcen speichert.
Bei der ersten Anwendung wird eine Datei `terraform.tfstate` angelegt, die alle
notwendigen Status-Informationen enthält.
Bei einer Hetzner-VM steht dort z.B. die eindeutige ID der VM, die die
Hetzner-API beim Anlegen zurückgegeben hat, in der Datei.
Durch diese Speicherung der Statusinformationen ist Terraform später in der
Lage, einen Abgleich zwischen aktuell laufender und in den Dateien beschriebenen
Resourcen zu erstellen.
Wurde eine VM beispielsweise in den Dateien mit mehr RAM ausgesattet, kann
Tofu dies erkennen und passt dann bei der nächsten Anwendung der RAM der laufenden
VM an.
## Hetzner Zugang ## Hetzner Zugang
Die Hetzner-Cloud ist in Projekte unterteilt. Jedes Projekt kann von einen oder Die Hetzner-Cloud ist in Projekte unterteilt. Jedes Projekt kann von einen oder
@ -20,9 +81,20 @@ mit angegeben wird. Die Datei hat folgenden Inhalt:
hcloud_token="SuperSecretToken" hcloud_token="SuperSecretToken"
``` ```
In den Projekten können auch ssh-Keys hinterlegt werden. Diese werden bei der
Erstellung einer VM mit angegeben und dann automatisch beim root-User in der
erzeugten VM hinterlegt.
Zu Vereinfachung liest diese Automatisierung die Datei `~/.ssh/id_ed25519.pub`
ein und hinterlegt den Public-Key automatisch in dem Hetzner-Projekt.
## Initalisierung ## Initalisierung
Dies lädt den notwendigen Hetzner-Provider herunter, wenn er noch nicht existiert Die Initalisierung lädt die notwendigen Provider herunter, die tofu benötigt,
um die Automatisierungen auszuführen. Provider sind dabei Plugins für tofu,
die einen bestimmten Funktionsumfang abbilden. In diesem Fall wird der Provider
für die Hetzner-Cloud nachgeladen, der die APIs von Hetzner kennt und diese
anspricht.
``` ```
tofu init tofu init