Ein großes Ziel von LXD ist es, die Interaktion mit Containern auf der Kommandozeile zu verbessern. Zum einen werden daher die lxc-Kommandos überarbeitet, zum anderen wird eine neue REST-API implementiert. Diese API kommuniziert, bei entsprechend konfiguriertem LXD, über HTTPS mit dem Host und dessen Containern. Der Vorteil der API liegt darin, dass Benutzer ihre eigenen Clients erstellen und dadurch LXD in ihre Infrastruktur integrieren können. Ein einfaches Python-Skript zeigt die der API zugrunde liegende Idee (Listing 5).
Listing 5: Python-API
#!/usr/bin/env python import os.path import requests conf_dir = os.path.expanduser('~/.config/lxc') crt = os.path.join(conf_dir, 'client.crt') key = os.path.join(conf_dir, 'client.key') print(requests.get('https://192.168.56.105:8090/1.0/containers', verify=False, cert=(crt, key)).text)
Über ein Skript erhalten Sie im nächsten Schritt die auf einem Host konfigurierten Container:
~/.config/lxc$ lxc config trust add client.crt
$ python -W ignore lxd.py | jq
{
"type": "sync",
"status": "Success",
"status_code": 200,
"metadata": [
"/1.0/containers/container0",
"/1.0/containers/container1"
]
}
Die REST-API ist tatsächlich ein Zugangspunkt zu LXD, der vielseitige Möglichkeiten eröffnet. Per HTTPS steuern Sie mit ihr mehrere LXD-Hosts und deren Container. Einem eigenen LXD-Client, der als Management-Werkzeug Container verwaltet, steht daher nichts mehr im Weg.
Die Vorgehensweise, für die LXD-Werkzeuge auch "lxc" zu verwenden, ist zu Beginn etwas ungewohnt. Bei näherem Hinsehen ist sie aber durchaus sinnvoll: Das LXD-Projekt erweitert immerhin zuerst die Lowlevel-LXC-Kommandos und zieht sie dann in LXD nach. Der neue Lightervisor ist auf jeden Fall ein großer Schritt in Richtung komfortables Container-Management. Mit ZFS, unprivilegierten Containern und Kommandos, die Host-übergreifend arbeiten, setzt LXD auf die richtigen Bausteine. Die REST-API rundet das Gesamtbild ab, sie erlaubt es Nutzern, eigene Clients in der Programmiersprache ihrer Wahl zu entwickeln. An der Live Migration von Containern wird immer noch gearbeitet, aber zumindest ist es in vielen Fällen bereits möglich, in Ubuntu 16.04 Container ohne Downtime von Host zu Host zu verschieben.
(of)
Link-Codes
[1] Cgroup-Einstellungen von LXC-Containern: https://www.thomas-krenn.com/de/wiki/Cgroup_Werte_von_LXC_Linux_Containern/
[2] LXD-Konfiguration: https://github.com/lxc/lxd/blob/master/doc/configuration.md/