Plantillas
Una oferta decide qué hardware obtiene. Una plantilla decide qué se ejecuta en él. Necesita ambas para desplegar: la oferta se elige en el mercado, y la página de despliegue la lleva consigo mientras usted elige la plantilla.
Una plantilla es una receta de lanzamiento
Una plantilla es una respuesta guardada a la pregunta "¿en qué debería arrancar esta máquina?". Contiene:
| Parte | Qué decide |
|---|---|
| Imagen y etiqueta | La imagen de contenedor que se descarga, opcionalmente desde un registro privado. |
| Modo de lanzamiento | Cómo se inicia el contenedor y qué puertos vienen con él. |
| Puertos | Qué puertos del contenedor se publican, cada uno con una etiqueta. |
| Entorno | Variables entregadas al contenedor. Los valores se pueden marcar como secretos. |
| Script de inicio | Comandos que se ejecutan dentro del contenedor la primera vez que arranca. Un inicio posterior no los vuelve a ejecutar. |
| Restricciones | Versión mínima de CUDA, VRAM mínima y otros mínimos de hardware que la página de despliegue verifica antes de dejarle lanzar. |
Una plantilla nunca nombra una máquina. Sus restricciones son mínimos —una versión mínima de CUDA, una VRAM mínima— y no un host fijo, de modo que la misma plantilla se despliega sobre una RTX 4090 de 1× o sobre una H100 PCIe de 8× sin editarla, siempre que ambas superen esos mínimos. Eso es lo que hace que valga la pena guardar una en lugar de volver a introducir los mismos ajustes cada vez.
Modos de lanzamiento
El modo de lanzamiento es el único campo que cambia la forma de la instancia en lugar de su contenido.
| Modo | Qué obtiene |
|---|---|
ssh | Un servidor SSH. El puerto 22 se agrega por usted. |
jupyter | JupyterLab más una shell SSH. Los puertos 22 y 8080 se agregan por usted. |
args | El entrypoint propio de la imagen, ejecutado con los argumentos que usted indique. Sin interfaz interactiva. |
vm | Una máquina virtual KVM completa. Solo se puede desplegar sobre una oferta compatible con VM. |
ssh y jupyter necesitan una imagen derivada de la imagen base de Superheat, porque esos modos dependen del entrypoint de la imagen base para levantar el demonio SSH y JupyterLab. args y vm ejecutan cualquier imagen. Consulte Modos de lanzamiento.
Sea lo que sea que defina su plantilla, la plataforma superpone su propio entorno encima y esa superposición gana. No puede sobrescribir el token de JupyterLab ni la cantidad de GPUs desde una plantilla. Variables de entorno cubre lo que controla la plataforma.
Visibilidad
Cada plantilla tiene uno de tres niveles de visibilidad.
| Visibilidad | Quién puede verla | Quién puede editarla |
|---|---|---|
system | Todo el mundo. Son los puntos de partida curados que mantiene Superheat. | Nadie. Las plantillas de sistema son inmutables a través de la API. |
private | Solo la organización que la posee. Es el valor predeterminado para todo lo que usted cree. | Esa organización. |
public | Todo el mundo. La receta es legible para cualquier cuenta. | La organización que la posee. |
Los valores de entorno secretos se enmascaran para cualquiera fuera de la organización propietaria, de modo que publicar una plantilla comparte la receta sin filtrar las credenciales incrustadas en ella.
No puede editar una plantilla de sistema o pública que no le pertenezca, pero sí puede duplicar cualquier plantilla que pueda ver. La copia aterriza en su organización como private y es suya para modificarla. Duplicar la plantilla de otra persona borra sus valores secretos y las credenciales del registro privado: usted aporta los suyos.
Por qué una plantilla tiene dos identidades
Una plantilla tiene un id estable y un hash_id. El hash_id es un hash del contenido de los campos relevantes para el lanzamiento —imagen, etiqueta, repositorio, modo, argumentos, script de inicio, entorno, puertos, restricciones, el directorio de Jupyter y el interruptor de JupyterLab, y el nombre de usuario del registro privado—, con el prefijo th_.
Se vuelve a generar cada vez que alguno de ellos cambia, y se mantiene igual cuando el propietario edita el nombre, la descripción, el readme, la visibilidad o el orden. La receta de lanzamiento tiene su propia identidad, separada de la fila que la contiene.
Esa división le da dos formas de apuntar a una plantilla:
| Lo que comparte | Comportamiento |
|---|---|
| El id | Sigue a la plantilla. Si el propietario cambia lo que lanza, su enlace lanza la nueva versión. |
El hash_id | Identifica una receta exacta. Si el propietario cambia lo que lanza, el hash antiguo deja de resolverse. |
La segunda es la que conviene usar cuando alguien necesita reproducir su ejecución. Un enlace con un hash obsoleto falla de forma visible en lugar de lanzar en silencio algo que ya no es lo que usted probó. La API lo resuelve en GET /v1/templates/by-hash/{hash_id}.