Update manual authored by Seyfried's avatar Seyfried
Die Kommandos ```deployclass``` und ```deployvm``` stellen Klassensätze bzw. einzelne VMs zur Verfügung. Die Kommandos ```deployclass``` und ```deployvm``` stellen Klassensätze bzw. einzelne VMs zur Verfügung.
# deployclass Das Anlegen einer Klasse besteht aus zwei Schritten. Zunächst muss auf der Webseite das Klassenprojekt angelegt werden, der SSH-Key hinterlegt und die Firewall-Einstellungen festgelegt werden. Dann können für jeden Schüler GMs in dieses Projekt instanziiert werden. Dies geschieht Skript-basiert anhand der ASV-Daten, die in einer speziellen CSV-Datei auf dem Cloudstack-Management-Server liegen.
# Anlegen einer Klasse in Cloudstack (GUI)
Nach dem Einloggen auf dem [Cloudstack-Server](https://cloudstack.hhs.karlsruhe.de) muss ein Projekt mit dem Klassenname angelegt werden (Projects->New project). Wichtig für den automatisierten Zugriff der Skript ist der korrekte Klassenname (keine Teilklasse, A/B o.ä.).
Nun wechselt man in das neu angelegte Projekt. Dies geht entweder von der Projekt-Seite mit diesem Button:
<img src="uploads/60b30c2a14c7213b412fc4e445af8bba/Bildschirmfoto_2023-09-29_um_09.10.14.png" alt="screenshot" width="300" />
...oder auf der Cloudstack-Seite oben mit einem Klick in das Projekt-Feld (dort steht nach dem Einloggen zunächst "Default View"):
<img src="uploads/814842dfa40a00730daed1e609cf7d9a/Bildschirmfoto_2023-09-29_um_09.12.50.png" alt="screenshot" width="500" />
In der Projekt-Ansicht wechselt man nun in den Menüpunkt "Compute" und selektiert "SSH Keys".
<img src="uploads/2da605c830b980c1fc6d22889771e8fb/Bildschirmfoto_2023-09-29_um_09.14.01.png" alt="screenshot" width="250" />
Mit einem Klick auf "Create a SSH key pair" kann man aus einem (zuvor generierten!) SSH-Key den Public Key hinterlegen und dem Schlüssel einen Namen vergeben.
Der letzte erforderliche Schritt ist, unter Network den Punkt "Security groups" zu öffnen und in der Sicherheitsgruppe "default" eine Ingress rule anzulegen mit den Protokollen "Any" und dem CIDR ```0.0.0.0/0``` (oder auch gerne detailliertere Regeln, dann können die Schülerinnen und Schüler allerdings ggf. nicht auf einen Serverdienst ihrer VM zugreifen, wenn dieser hier nicht hinterlegt ist).
# Skripte
## deployclass
**Aufruf:** ```/home/administrator/bin/deployclass <class> [<template>]``` **Aufruf:** ```/home/administrator/bin/deployclass <class> [<template>]```
instanziiere VMs mit der Vorlage ```<template>``` (oder Ubuntu, wenn nichts angegeben). instanziiere VMs mit der Vorlage ```<template>``` (oder Ubuntu, wenn nichts angegeben).
...@@ -9,7 +32,7 @@ instanziiere VMs mit der Vorlage ```<template>``` (oder Ubuntu, wenn nichts ange ...@@ -9,7 +32,7 @@ instanziiere VMs mit der Vorlage ```<template>``` (oder Ubuntu, wenn nichts ange
Admin-Benutzer (Account "administrator") werden auf jeder VM mit dem Passwort GebTTMMJJJJ mit dem Geburtstag jedes Schülers angelegt. Die DNS-Einträge werden so aktualisiert, dass ```<schüler-name>.vm.hhs.karlsruhe.de``` auf die IP der VM zeigt. Admin-Benutzer (Account "administrator") werden auf jeder VM mit dem Passwort GebTTMMJJJJ mit dem Geburtstag jedes Schülers angelegt. Die DNS-Einträge werden so aktualisiert, dass ```<schüler-name>.vm.hhs.karlsruhe.de``` auf die IP der VM zeigt.
Beachte: der erste SSH-Schlüssel des Projekts wird verwendet, falls dort mehrere hinterlegt sein sollten. Dies ist nur der Zugang für Lehrkräfte, falls Schüler sich aussperren. VM-seitig können natürlich weitere SSH-Keys mit Putty und ggf. puttygen oder ssh-keygen hinterlegt werden. Beachte: der erste SSH-Schlüssel des Projekts wird verwendet, falls dort mehrere hinterlegt sein sollten. Dies ist nur der Zugang für Lehrkräfte, falls Schüler sich aussperren. VM-seitig können natürlich weitere SSH-Keys mit Putty und ggf. puttygen oder ssh-keygen hinterlegt werden.
# deployvm ## deployvm
**Aufruf:** ```/home/administrator/bin/deployvm <project> <distro> <name> <pwd>``` **Aufruf:** ```/home/administrator/bin/deployvm <project> <distro> <name> <pwd>```
Das ```<project>``` muss auf cloudstack bereits existieren. Der ```<distro>``` Parameter wird gegen die verfügbaren Templates gematcht. Eine Liste der verfügbaren Templates kann ausgegeben werden mit Das ```<project>``` muss auf cloudstack bereits existieren. Der ```<distro>``` Parameter wird gegen die verfügbaren Templates gematcht. Eine Liste der verfügbaren Templates kann ausgegeben werden mit
... ...
......