Skip to content

Potato auf Jetstream2 bereitstellen

Eine Potato-Annotationsstudie mit einer ACCESS-Allokation kostenlos auf Jetstream2 betreiben, der Forschungscloud der NSF, mit potato deploy und OpenStack.

potato deploy up --provider openstack --cloud jetstream2 bringt eine Annotationsstudie auf Jetstream2, eine von der NSF finanzierte Forschungscloud, wo sie über die Service Units Ihrer Allokation hinaus nichts kostet. Forschende an US-Einrichtungen erhalten Rechenzeit auf Jetstream2 über eine ACCESS-Allokation, sodass auch eine Studie ohne Budget auf einer eigenen Maschine mit einem Datenträger laufen kann, der Neustarts übersteht. Jede Instanz erhält einen DNS-Namen unter projects.jetstream-cloud.org, sodass Annotatoren einen gewöhnlichen Hostnamen mit einem gewöhnlichen HTTPS-Zertifikat sehen. Diese Seite setzt Potato 2.10 oder neuer voraus und eine Konfiguration, die Sie bereits mit potato start ausgeführt haben.

Eine Jetstream2-Allokation und Zugangsdaten beschaffen

Jetstream2 läuft auf der Cloud-Software OpenStack, und Potato erreicht es über OpenStack. Potato authentifiziert sich mit einem OpenStack-Application Credential, einem Schlüssel, der an eine Allokation gebunden ist und sich einzeln widerrufen lässt. Die Einrichtung umfasst drei Schritte:

  1. Beantragen Sie unter allocations.access-ci.org eine ACCESS-Explore-Allokation und fordern Sie CPU-Zeit auf Jetstream2 an.
  2. Melden Sie sich unter js2.jetstream-cloud.org im Horizon-Dashboard von Jetstream2 an, legen Sie ein Application Credential an und laden Sie dessen Datei clouds.yaml herunter.
  3. Speichern Sie die Datei als ~/.config/openstack/clouds.yaml und nennen Sie ihren Eintrag jetstream2. Unter diesem Namen sucht Potato seine Standardwerte für Jetstream2.

Installieren Sie dann das OpenStack-Extra und prüfen Sie, ob die Zugangsdaten funktionieren:

bash
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verify

Festlegen, wer sich anmelden kann

potato deploy ändert Ihre Anmeldeeinstellungen nicht, und ein Jetstream2-Hostname ist öffentlich. Wenn sich laut Konfiguration jeder registrieren kann, meldet der Probelauf unten die Warnung D003, „Anyone who finds the URL can register and annotate.“ (Jeder, der die URL findet, kann sich registrieren und annotieren.) Bei einer Crowdsourcing-Studie ist offene Registrierung meist gewollt. Für benannte Annotatoren tragen Sie diese vor dem Deployment unter user_config.users mit allow_all_users: false ein (Passwortverwaltung) oder lassen sie sich über Ihre Einrichtung anmelden (SSO und OAuth).

Den Plan prüfen

Ein Probelauf legt nichts an. Er gibt jeden Schritt des Deployments aus, den Hostnamen, den die Aufgabe erhalten wird, und was die Instanz Ihre Allokation kosten wird:

bash
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-run

Der Plan legt eine m3.small-Instanz mit 2 vCPUs aus dem Image Featured-Ubuntu24 an, im automatisch zugewiesenen Netzwerk Ihrer Allokation und mit einer Floating IP aus dem Netzwerk public. Eine Sicherheitsgruppe erlaubt eingehend nur die Ports 22, 80 und 443. Weil sich der Standard-Login-Benutzer zwischen den Jetstream2-Images unterscheidet, legt Potato einen eigenen Benutzer potato-deploy an, der einen für dieses Deployment erzeugten Deploy-Schlüssel hält. --size wählt einen anderen Flavor, --network nennt ein Netzwerk, wenn die Allokation kein automatisch zugewiesenes hat, und --volume-gb fügt ein separates Volume für die Daten der Aufgabe hinzu. Eine m3.small verbraucht 2 Service Units (SUs, die Währung der Allokation) pro Stunde, etwa 17.520 im Jahr, wenn sie durchgehend läuft. Entfernen Sie die Instanz deshalb, wenn die Studie endet.

Bereitstellen

Führen Sie denselben Befehl ohne --dry-run aus und bestätigen Sie den Plan, wenn Potato danach fragt:

bash
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2

Die Aufgabe ist unter https://potato-<name>.<allocation>.projects.jetstream-cloud.org erreichbar, wobei <name> aus dem Namen der Aufgabe stammt. Jetstream2 veröffentlicht den DNS-Namen ein bis zwei Minuten, nachdem die Floating IP angehängt wurde, und Potato wartet darauf, bevor es ein Let's-Encrypt-Zertifikat mit 90 Tagen Laufzeit anfordert. Am Ende gibt das Deployment die URL aus und den Pfad der Datei mit dem Admin-Schlüssel, .potato/secrets.json neben Ihrer Konfiguration. Der Admin-Schlüssel öffnet das Admin-Dashboard unter /admin.

Während der Studie meldet potato deploy status, ob Server und Zertifikat in Ordnung sind, und potato deploy logs myproject/config.yaml -f verfolgt das Serverprotokoll. Wenn Sie up nach einer Änderung der Konfiguration erneut ausführen, lädt es die neue Version auf dieselbe Instanz hoch.

Die Studie beenden

Die Annotationen liegen auf dem Datenträger der Instanz, der mit der Instanz gelöscht wird. Holen Sie sie zuerst auf Ihren Rechner, prüfen Sie sie und entfernen Sie dann die Instanz:

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

pull schreibt alles, was das Deployment gesammelt hat, in ein neues Verzeichnis potato-pull-<name>-<timestamp>. destroy läuft nicht bei einem Deployment, von dem nie ein Pull gemacht wurde. Sobald es gelaufen ist, verbraucht die Instanz keine SUs mehr.

OpenStack-Clouds an Hochschulen

Derselbe Provider funktioniert mit einer OpenStack-Cloud Ihrer Hochschule. Legen Sie ihren Eintrag in clouds.yaml unter einem beliebigen Namen ab und übergeben Sie diesen Namen an --cloud. Ohne die Jetstream2-Standardwerte verwendet Potato den Flavor m1.small, ein Image Ubuntu 24.04 und das externe Netzwerk public, und --size, --os-image und --network überschreiben sie. Eine Hochschul-Cloud gibt der Instanz keinen DNS-Namen, daher ist die Aufgabe unter ihrer Floating IP mit einem kurzlebigen IP-Zertifikat erreichbar, wie beim Ziel AWS Lightsail.

Fehlerbehebung

„No --network given and this project has no auto-allocated network“ bedeutet, dass die Allokation kein Standardnetzwerk hat. Legen Sie in Horizon oder Exosphere ein Netzwerk und einen Router an und übergeben Sie --network <name>.

Das Zertifikat braucht beim ersten Deployment einige Minuten, weil der DNS-Name auflösbar sein muss, bevor Let's Encrypt es ausstellen kann.

Weiterführende Informationen