Skip to content

Desplegar Potato en Jetstream2

Ejecuta un estudio de anotación con Potato en Jetstream2, la nube de investigación de la NSF, gratis con una asignación de ACCESS, con potato deploy y OpenStack.

potato deploy up --provider openstack --cloud jetstream2 pone un estudio de anotación en Jetstream2, una nube de investigación financiada por la NSF, donde no cuesta nada más allá de las unidades de servicio de tu asignación. Los investigadores de instituciones de EE. UU. obtienen tiempo en Jetstream2 mediante una asignación de ACCESS, así que un estudio sin presupuesto puede ejecutarse igualmente en una máquina dedicada con un disco que sobrevive a los reinicios. Cada instancia recibe un nombre DNS bajo projects.jetstream-cloud.org, de modo que los anotadores ven un nombre de host normal con un certificado HTTPS normal. Esta página requiere Potato 2.10 o posterior y una configuración que ya hayas ejecutado con potato start.

Obtener una asignación y una credencial de Jetstream2

Jetstream2 funciona con el software de nube OpenStack, y Potato accede a él a través de OpenStack. Potato se autentica con una credencial de aplicación de OpenStack, una clave vinculada a una asignación que puedes revocar por separado. Configurarla lleva tres pasos:

  1. Solicita una asignación ACCESS Explore en allocations.access-ci.org y pide tiempo de CPU en Jetstream2.
  2. Inicia sesión en el panel Horizon de Jetstream2 en js2.jetstream-cloud.org, crea una credencial de aplicación y descarga su archivo clouds.yaml.
  3. Guarda el archivo como ~/.config/openstack/clouds.yaml y llama jetstream2 a su entrada, que es el nombre al que están asociados los valores por defecto de Potato para Jetstream2.

Después instala el extra de OpenStack y comprueba que la credencial funciona:

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

Decidir quién puede iniciar sesión

potato deploy no cambia tus ajustes de inicio de sesión, y un nombre de host de Jetstream2 es público. Si la configuración permite que cualquiera se registre, la ejecución de prueba de abajo muestra el aviso D003, «Anyone who finds the URL can register and annotate.» (Cualquiera que encuentre la URL puede registrarse y anotar.) En un estudio de crowdsourcing, el registro abierto suele ser intencionado. Para anotadores con nombre, inclúyelos en user_config.users con allow_all_users: false (Gestión de contraseñas) o haz que inicien sesión a través de tu institución (SSO y OAuth) antes de desplegar.

Revisar el plan

Una ejecución de prueba no crea nada y muestra cada paso del despliegue, el nombre de host que tendrá la tarea y lo que costará la instancia a tu asignación:

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

El plan crea una instancia m3.small con 2 vCPU a partir de la imagen Featured-Ubuntu24, en la red asignada automáticamente a tu asignación, con una IP flotante de la red public. Un grupo de seguridad permite la entrada solo por los puertos 22, 80 y 443. Como el usuario de acceso por defecto varía entre las imágenes de Jetstream2, Potato crea su propio usuario potato-deploy con una clave de despliegue generada para este despliegue. --size elige otro flavor, --network indica una red cuando la asignación no tiene una asignada automáticamente, y --volume-gb añade un volumen independiente para los datos de la tarea. Una m3.small consume 2 unidades de servicio (SU, la moneda de la asignación) por hora, unas 17 520 en un año si se deja en marcha, así que elimina la instancia cuando termine el estudio.

Desplegar

Ejecuta el mismo comando sin --dry-run y confirma el plan cuando Potato te lo pida:

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

La tarea se sirve en https://potato-<name>.<allocation>.projects.jetstream-cloud.org, donde <name> sale del nombre de la tarea. Jetstream2 publica el nombre DNS uno o dos minutos después de asignar la IP flotante, y Potato lo espera antes de solicitar un certificado de Let's Encrypt de 90 días. El despliegue termina mostrando la URL y la ruta del archivo de la clave de administración, .potato/secrets.json, junto a tu configuración. La clave de administración abre el panel de administración en /admin.

Durante el estudio, potato deploy status indica si el servidor y su certificado están en buen estado, y potato deploy logs myproject/config.yaml -f sigue el registro del servidor. Si vuelves a ejecutar up después de editar la configuración, sube la nueva versión a la misma instancia.

Terminar el estudio

Las anotaciones están en el disco de la instancia, que se borra con ella. Descárgalas primero a tu máquina, compruébalas y después elimina la instancia:

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

pull escribe todo lo que ha recogido el despliegue en un directorio nuevo potato-pull-<name>-<timestamp>. destroy no se ejecuta en un despliegue cuyos datos nunca se han descargado. Una vez ejecutado, la instancia deja de consumir SU.

Nubes OpenStack universitarias

El mismo proveedor funciona en una nube OpenStack de tu universidad. Pon su entrada de clouds.yaml con cualquier nombre y pasa ese nombre a --cloud. Sin los valores por defecto de Jetstream2, Potato usa el flavor m1.small, una imagen Ubuntu 24.04 y la red externa public, y --size, --os-image y --network los sustituyen. Una nube universitaria no da a la instancia un nombre DNS, así que la tarea se sirve en su IP flotante con un certificado de IP de corta duración, como en el destino AWS Lightsail.

Solución de problemas

«No --network given and this project has no auto-allocated network» significa que la asignación no tiene red por defecto. Crea una red y un router en Horizon o Exosphere y pasa --network <name>.

El certificado tarda unos minutos en el primer despliegue, porque el nombre DNS tiene que resolverse antes de que Let's Encrypt pueda emitirlo.

Lecturas adicionales