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.
(2020: Inzwischen gibt es auch ein Ansible-Modul, kurze Beschreibung siehe dort: HCloud + Ansible).
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. (Update 2019-02-02: zusätzlich getestet mit hcloud Version v1.11.0, keine wesentlichen Änderungen beim den hier beschriebenen Tasks, ausser dass man jetzt verschiedene Locations und Datacenter auswählen kann. )
Herunterladen kann man sich hcloud
dort: https://github.com/hetznercloud/cli
Dann muss man sich in der Weboberfläche:
Hier im Text heißt das Projekt "Test", die Datei mit dem API-KEy Test-api.key
.
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
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
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 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%
Update 2019-02: Inzwischen kann man optional Location (es gibt Nürnberg, Falkenstein und Helsinki) und Rechenzentrum angeben, wenn man seine Server aus Ausfallgründen verteilen will.
Und wenn man dann die IP-Adressen wissen will, lässt man sich seine Server auflisten:
hcloud server list ID NAME STATUS IPV4 IPV6 DATACENTER 1858752 test1 running 85.121.170.248 2a01:4f8:1c0c:4297::/64 nbg1-dc3
(Update 2019-02: Spalte DATACENTER wird angezeigt)
und dann kann man sich auch schon einloggen (wenn man den SSH-Key im SSH-Agent geladen hat):
ssh root@85.121.170.248
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 :
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)
(getestet mit hcloud Version v1.11.0)
Wenn man zusätzlichen Plattenplatz (Minimum: 10GB) braucht, kann man einfach Volumes (virtuelle Festplatten) dazuhängen. Anders als die "erste Festplatte" der Maschine können diese Volumes nachträglich auch vergrößert werden. Volumes können auch unabhängig von einer Instanz existieren. Man könnte sie also wechselweise auf verschiedenen Maschinen mounten (ob read-only parallel auf einer 2ten Maschine habe ich noch nicht getestet). Volumes müssen in der selben Location (also Nürnberg, Falkenstein, Helsinki) wie die virtuelle Maschine sein - eine weitere Unterteilung nach Rechenzentren gibt es für die Volumes aber nicht.
Wenn man beim ersten "create" eine Maschine angibt, wird das Volume automatisch an der richtigen Stelle angelegt, man kann stattdessen aber auch mit der Option --location
arbeiten.
Hier jetzt einfach mal als zusätzliche Festplatte:
hcloud volume create --format ext4 --server test1 --size 10 --name test1-data
Nach kurzer Wartezeit ist die Festplatte mit fdisk -l
auf der Maschine zu sehen.
Die Festplatte muss auf der Maschine nur noch formatiert und gemountet werden.
Oder eine Festplatte für die Location Helsinki:
$ hcloud volume create --format ext4 --location hel1 --name testtest --size 10 1s [====================================================================] 100% Volume 1830234 created $ hcloud volume list ID NAME SIZE SERVER LOCATION 1807819 test1-data 10 GB 1858752 nbg1 1830234 testtest 10 GB - hel1 $ hcloud volume delete testtest Volume 1830234 deleted
(getestet mit hcloud Version v1.11.0, 2019-02-02)
Und welche Rechenzentren gibt es für die VMs (und welche Locations für die Volumes?)
hcloud datacenter list ID NAME DESCRIPTION LOCATION 2 nbg1-dc3 Nuremberg 1 DC 3 nbg1 3 hel1-dc2 Helsinki 1 DC 2 hel1 4 fsn1-dc14 Falkenstein 1 DC14 fsn1
Details über Standort und verfügbare Intanzen kann man sich auch anzeigen lassen:
hcloud datacenter describe hel1-dc2 ID: 3 Name: hel1-dc2 Description: Helsinki 1 DC 2 Location: Name: hel1 Description: Helsinki DC Park 1 Country: FI City: Helsinki Latitude: 60.169855 Longitude: 24.938379 Server Types: Available: - ID: 1 Name: cx11 Description: CX11 - ID: 2 Name: cx11-ceph Description: CX11 Ceph Disk ....
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!
siehe auch:
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.21@unixwitch.de
weitere Tools / Spickzettel