Mehr Hintergrundinfos in README
This commit is contained in:
parent
006bd84f60
commit
eba4b5e098
1 changed files with 73 additions and 1 deletions
74
README.md
74
README.md
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue