Das Ruby-Labor

Ich hatte unserer lokalen Gesamtschule in Lohmar schon länger vorgeschlagen, eine Informatik-AG zu unterstützen. Vor ein paar Tagen kam dann die Bestätigung: Im kommenden Halbjahr werde ich 18 Schülern knapp 4 Monate lang Gelegenheit geben, die Programmierung eines Computers auszuprobieren. Wie schaffe ich eine Infrastruktur, in der alle Kursteilnehmer teilnehmen können?

18 Nutzer an einem Laptop

Die Schule verfügt über zwei Computerräume mit insgesamt 40 PCs, auf denen aktuell Windows 7 läuft. Jeder Schüler hat einen eigenen Account. Auf den PCs ist Standardsoftware installiert, nicht aber, was wir zum Programmieren benötigen:

  • Ruby 2.5
  • Ein ordentlicher Texteditor
  • Eine Shell (bash)

Meine Idee sieht nun vor, dass die Schüler von ihrem PC auf einen virtuellen Server zugreifen, auf dem die erforderlichen Teile vorbereitet sind. Dabei soll möglichst keine Software auf den PCs zusätzlich installiert werden müssen. Der virtuelle Server soll leicht neu aufzusetzen sein, die Einrichtung erfolgt automatisch.

Ruby Labor Aufbau

Die Basis ist somit für mich Microsoft Remote Desktop. Das ist auf den PCs verfügbar. Da auf dem Zielserver Linux eingesetzt werden soll, kommt dort xrdp zum Einsatz. Als zentrale Hardware dient mein ThinkPad E470 mit stolzen 16GB RAM, somit soll die Umgebung möglichst schlank und ressourcenschonend laufen. Das erziele ich mit dem xfce4 Desktop. Den virtuellen Server erstelle ich erneut mit Vagrant, die verschiedenen Einstellungen nehme ich im Rahmen der Provisionierung mit Ansible vor.

Bzgl der Virtualisierung habe ich mich für LXC entschieden, und weder Virtualbox noch Docker verwendet. LXC Container erzeugen sehr wenig Overhead für die Virtualiserung, sind leicht handhabbar und funktionieren wie eine VM, wenn Linux die Basis sein soll. Vagrant unterstützt LXC Container mit einem Vagrant LXC Provider.

Ich bin nun natürlich gespannt, wie der kleine Laptop mit der Last von 18 Benutzern klarkommt. In einem ersten Test habe ich 3 Sessions incl Geany Editor gestartet, was insgesamt etwa 500MB RAM belegt hat. Würde der Verbrauch in diesem Maß wachsen, brauchen 18 Nutzer ca 3GB RAM. Die zusätzliche CPU Last war mit nur 3 Sessions nicht ablesbar, da wird erst der Einsatz zeigen, ob das klappt.

Im Ansible Playbook kannst du auch sehen, wie ich 18 Nutzer automatisch anlege und ihnen vorgefertigte Einstellungen für Desktop und Editor einrichte. Der Quelltext des Projektes ist unter https://git.software-berater.net/christian/ruby-lab frei zugänglich.