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
|
||||
|
||||
## 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
|
||||
|
||||
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"
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue