Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:sysadmin:tools:hcloud

hcloud - Hetzner cloud CLI (Notizen)

Der Provider Hetzner hat neuerdings auch Cloud Server. Über den Namen kann man streiten, sie sehen eigentlich wie normale Virtuelle Maschinen aus - mit dem kleinen Zusatz dass man sie jetzt nicht nur per WEB-Oberfläche sondern auch per REST-API1), per GO-API und per Kommandozeile steuern kann. Hier geht es erst mal um das Kommandozeilentool, das hat Hetzner hcloud genannt.

Das ganze ist sehr deutlich weniger umfangreich als z.B. google-Cloud oder Amazon AWS, aber erstens muss jeder mal klein anfangen und hier sind große Teile der (wenigen verfügbaren) Services mit Fixpreis veranschlagt. Weniger Möglichkeiten, aber dafür auch überschaubarer.

Vorbemerkung: Tool und Cloud haben momentan noch nicht sehr viele Features. Ich kann mir vorstellen, dass das ganze noch deutlich komfortabler wird. Wo nicht anders vermerkt: Getestet mit hcloud Version v1.3.0 auf einem OpenSuse Linux Tumbleweed (Stand 2018-02) mit bash 4.4.12 und expect 5.45.3.

Start

Herunterladen kann man sich hcloud dort: https://github.com/hetznercloud/cli

Dann muss man sich in der Weboberfläche:

  • einloggen (bzw. vorher einen Account anlegen)
  • ein Projekt anlegen
  • einen Projektweiten API-Key generieren (und gleich in einer Datei sichern).

Hier im Text heißt das Projekt "Test", die Datei mit dem API-KEy Test-api.key.

hcloud context create -> initialiseren -> mit dem Projekt bekannt machen

Jetzt muss man die Kommandozeile bemühen und sein Projekt bekannt geben.

hcloud context create Test

Dann wird man auf der Kommandozeile nach dem API-Key gefragt. Leider scheint noch keine Möglichkeit vorgesehen zu sein, das als Datei zu übergeben … d.h. hier muss interaktiv der API-Key eingegeben werden. Bis dieses (IMHO sehr nötige Feature) in hcloud eingebaut wird, hab ich mir mit expect einen kleinen Workaround gebaut:

#!/usr/bin/expect -f

set CONTEXTNAME [lindex $argv 0]
set APIKEYFILE [lindex $argv 1]

set FilePointer [open "$APIKEYFILE" r]
set ApiKey [read $FilePointer]

set timeout -1
spawn hcloud context create $CONTEXTNAME
match_max 500
expect -exact "Token: "
send -- "$ApiKey\r"
expect eof

Das lässt sich entweder vom Shell-Script aus oder auch direkt aus der Kommandozeile aus aufrufen:

./hcloud-login.exp Test Test-api.key

2 Ergänzungen zu ''context create''

Bei context create wird nicht geprüft, ob der API-Key auch stimmt oder ob es das Projekt überhaupt gibt, aber bei späteren Aktionen erhält man die Meldung "hcloud: unable to authenticate your token (unauthorized)"

Der API-Key wird bei context create in der Datei $HOME/.config/hcloud/cli.toml abgelegt (Klartext).

active_context = "Test"

[[contexts]]
  name = "Foo"
  token = "bar"

[[contexts]]
  name = "Test"
  token = "AhchiesGEFAELSCHT1she5aiZoOhx1eez6ooVo4ohbNah6theBaiNg0GEFAELSCHT"

mit hcloud context delete Test wirft man den passenden Eintrag wieder aus der Datei

SSH-Keys hochladen

hcloud ssh-key create --name Anna_Beispiel_2018_02 --public-key-from-file ./anna_beispiel_2018-02.pub

oder man gibt den Inhalt des Public Keys direkt an:

hcloud ssh-key create --name Anna_Beispiel_2018_02 --public-key "ssh-rsa AAAAB3Nza<gekürzt>3eVbbbmYu/+w6rTw=="

Server starten

Server starten geht recht schnell:

hcloud server create --name test1 --image ubuntu-16.04 \
   --type cx11 --ssh-key Anna_Beispiel_2018_02 --ssh-key Beatrice_Example_2017_12
  12s [====================================================================] 100%

Und wenn man dann die IP-Adressen wissen will, lässt man sich seine Server auflisten:

hcloud server list
ID       NAME    STATUS    IPV4             IPV6
500981   test1   running   85.121.170.248   2a01:4f8:1c0c:4297::/64

und dann kann man sich auch schon einloggen (wenn man den SSH-Key im SSH-Agent geladen hat):

ssh root@94.130.180.239
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-112-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

4 packages can be updated.
2 updates are security updates.

root@test1 ~ # exit

So so, frisch installiert und schon braucht man Updates …

Weil man sich von Testservern aber nicht die Haare vom Kopf fressen lassen will, gleich mal wieder ausschalten:

hcloud server poweroff test1

und auch löschen, denn auch ausgeschaltete Server kosten bei Hetzner Geld:

hcloud server delete test1

Nachdem der Server jetzt nicht so lange gelaufen ist, waren die Kosten aber sehr übersichtlich :-D:

Rechnungsvorschau: 0,00 €

Die kleinste Instanz CX11 (1 vCPU, 2GB RAM, 20GB Festplatte, 20TB Traffic outgoing) kostet momentan monatlich maximal 2.96€ (brutto. IO, Storage, CPU sind fix und im Preis enthalten, outgoing Traffic kostet wenn ein bestimmter Wert überschritten wird, für Backup und Snapshots muss man zusätzlich zahlen (20% vom Serverpreis bei Backups die 7 Tage zurückgehen)). Bei kürzeren Laufzeiten wird immer mit ganzen Betriebsstunden gerechnet, bei einem Netto-Stundenpreis von 0,004€ kam ich als Kundin hier bei diesem kurzen Test umsonst weg2)

Was noch fehlt

Was ich nicht beschrieben habe: Vieles!

hcloud (und die API) können einiges was ich hier nicht beschrieben habe oder momentan nicht verwende: u. a. Floating IPs verwalten, ISO-Images verwenden, Server in verschiedenen Rechenzentren und Locations anlegen 3), Backups einschalten, Snapshots einschalten, CEPH-Festplatten verwenden.

Was mir im Tool und Api noch fehlen:

Am meisten fehlt mir: DNS-Verwaltung!

1) REST: einfach gesagt per HTTP-Abfrage, genauer weiss es u.a. die Wikipedia
2) Achtung: Stand 2018-02 so wie ich das verstanden habe, lest Euch die Bedingungen selber durch
3) momentan sind das 2 RZs
de/sysadmin/tools/hcloud.txt · Zuletzt geändert: 2018-02-02 08:02 von hella

Seiten-Werkzeuge