Distribuire Potato su Jetstream2
Esegui uno studio Potato su Jetstream2, il cloud per la ricerca della NSF, gratis con un'allocazione ACCESS, tramite potato deploy e una credenziale OpenStack.
potato deploy up --provider openstack --cloud jetstream2 porta uno studio di annotazione su Jetstream2, un cloud per la ricerca finanziato dalla NSF, dove non costa nulla oltre alle unità di servizio della tua allocazione. I ricercatori delle istituzioni statunitensi ottengono tempo su Jetstream2 tramite un'allocazione ACCESS, quindi anche uno studio senza budget può girare su una macchina dedicata con un disco che sopravvive ai riavvii. Ogni istanza riceve un nome DNS sotto projects.jetstream-cloud.org, quindi gli annotatori vedono un normale nome host con un normale certificato HTTPS. Questa pagina richiede Potato 2.10 o successivo e una configurazione che hai già eseguito con potato start.
Ottenere un'allocazione e una credenziale Jetstream2
Jetstream2 funziona con il software cloud OpenStack, e Potato vi accede tramite OpenStack. Potato si autentica con una application credential di OpenStack, una chiave legata a una sola allocazione che puoi revocare in modo indipendente. Per configurarne una servono tre passaggi:
- Richiedi un'allocazione ACCESS Explore su allocations.access-ci.org e chiedi tempo CPU su Jetstream2.
- Accedi alla dashboard Horizon di Jetstream2 su js2.jetstream-cloud.org, crea una application credential e scarica il suo file
clouds.yaml. - Salva il file come
~/.config/openstack/clouds.yamle chiama la sua vocejetstream2, il nome a cui sono legati i valori predefiniti di Potato per Jetstream2.
Poi installa l'extra OpenStack e verifica che la credenziale funzioni:
pip install 'potato-annotation[deploy-openstack]'
potato deploy providers --verifyDecidere chi può accedere
potato deploy non modifica le tue impostazioni di accesso, e un nome host Jetstream2 è pubblico. Se la configurazione permette a chiunque di registrarsi, l'esecuzione di prova qui sotto segnala l'avviso D003, "Anyone who finds the URL can register and annotate." (Chiunque trovi l'URL può registrarsi e annotare.) Per uno studio in crowdsourcing la registrazione aperta di solito è voluta. Per annotatori nominativi, elencali sotto user_config.users con allow_all_users: false (Gestione delle password) oppure falli accedere tramite la tua istituzione (Autenticazione SSO e OAuth) prima del deploy.
Controllare il piano
Un'esecuzione di prova non crea nulla e stampa ogni passaggio del deploy, il nome host che avrà il task e quanto l'istanza costerà alla tua allocazione:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2 --dry-runIl piano crea un'istanza m3.small con 2 vCPU dall'immagine Featured-Ubuntu24, sulla rete auto-allocata della tua allocazione, con un IP flottante dalla rete public. Un security group consente in ingresso solo le porte 22, 80 e 443. Poiché l'utente di accesso predefinito cambia da un'immagine Jetstream2 all'altra, Potato crea un proprio utente potato-deploy con una chiave di deploy generata per questo deployment. --size sceglie un altro flavor, --network indica una rete quando l'allocazione non ne ha una auto-allocata, e --volume-gb aggiunge un volume separato per i dati del task. Una m3.small consuma 2 unità di servizio (SU, la valuta dell'allocazione) all'ora, circa 17.520 in un anno se resta accesa, quindi distruggi l'istanza quando lo studio finisce.
Distribuire
Esegui lo stesso comando senza --dry-run e conferma il piano quando Potato lo chiede:
potato deploy up myproject/config.yaml --provider openstack --cloud jetstream2Il task è servito su https://potato-<name>.<allocation>.projects.jetstream-cloud.org, dove <name> deriva dal nome del task. Jetstream2 pubblica il nome DNS un paio di minuti dopo il collegamento dell'IP flottante, e Potato lo attende prima di richiedere un certificato Let's Encrypt di 90 giorni. Il deploy termina stampando l'URL e il percorso del file della chiave di amministrazione, .potato/secrets.json accanto alla tua configurazione. La chiave di amministrazione apre la dashboard di amministrazione su /admin.
Durante lo studio, potato deploy status indica se il server e il suo certificato sono in buono stato, e potato deploy logs myproject/config.yaml -f segue il log del server. Eseguire di nuovo up dopo aver modificato la configurazione carica la nuova versione sulla stessa istanza.
Chiudere lo studio
Le annotazioni si trovano sul disco dell'istanza, che viene eliminato insieme all'istanza. Recuperale prima sulla tua macchina, controllale e poi rimuovi l'istanza:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpull scrive tutto ciò che il deployment ha raccolto in una nuova directory potato-pull-<name>-<timestamp>. destroy non si esegue su un deployment su cui non è mai stato eseguito un pull. Una volta eseguito, l'istanza smette di consumare SU.
Cloud OpenStack di ateneo
Lo stesso provider funziona su un cloud OpenStack di ateneo. Inserisci la sua voce di clouds.yaml con un nome qualsiasi e passa quel nome a --cloud. Senza i valori predefiniti di Jetstream2, Potato usa il flavor m1.small, un'immagine Ubuntu 24.04 e la rete esterna public, e --size, --os-image e --network li sostituiscono. Un cloud di ateneo non assegna un nome DNS all'istanza, quindi il task è servito sul suo IP flottante con un certificato IP di breve durata, come sulla destinazione AWS Lightsail.
Risoluzione dei problemi
"No --network given and this project has no auto-allocated network" significa che l'allocazione non ha una rete predefinita. Crea una rete e un router in Horizon o Exosphere e passa --network <name>.
Il certificato richiede qualche minuto al primo deploy, perché il nome DNS deve risolversi prima che Let's Encrypt possa emetterlo.
Approfondimenti
- Eseguire Potato in locale o nel cloud, per le altre destinazioni cloud
- Distribuire un server di annotazione, per scegliere un host
- Riferimento per Jetstream2 e OpenStack