3.2 KiB
3.2 KiB
name, description, effort, argument-hint
| name | description | effort | argument-hint |
|---|---|---|---|
| spark-ssh | Conecta y ejecuta comandos en el servidor remoto "spark" vía SSH usando la variable de entorno SPARK_PASSWORD para la autenticación (spark no acepta key, solo password). Traduce rutas entre el volumen NFS /mnt/docker-nas/projects de spark y la carpeta ~/projects de este entorno de desarrollo (son el mismo storage compartido). Triggers: "conéctate a spark", "ejecuta esto en spark", "corre este comando en spark", "revisa spark", "spark ssh". | low | [comando o tarea a ejecutar en spark] |
spark-ssh — Ejecutar comandos remotos en spark vía SSH
Contexto fijo
- El host
sparkya está configurado en~/.ssh/config(HostName <<SPARK_IP_1>>,User aleleba) — nunca hace falta especificar user/host, bastassh spark. - spark no acepta autenticación por key, solo por password. La password vive en la variable de
entorno
$SPARK_PASSWORDde este entorno de desarrollo. sshno tiene ninguna forma nativa de pasar una password por flag (-pes el puerto, no la password) — por eso se usasshpasspara automatizar el login.- spark tiene montado por NFS el volumen
/mnt/docker-nas. Dentro de él,/mnt/docker-nas/projects/<nombre>es exactamente el mismo storage que~/projects/<nombre>en este entorno de desarrollo (compartido vía NAS). Un cambio hecho en un lado es instantáneamente visible en el otro. - En spark, los modelos (LLMs, checkpoints, etc.) se guardan en
/home/aleleba/models— esta ruta es local a spark, no está compartida con este entorno de desarrollo.
1. Preflight — sshpass (una sola vez, idempotente)
which sshpass >/dev/null 2>&1 || sudo apt-get install -y sshpass
Si ya está instalado (lo estará después de la primera vez que se use esta skill), este paso no hace nada — no volver a instalar ni preguntar por ello.
2. Ejecutar un comando remoto
SSHPASS="$SPARK_PASSWORD" sshpass -e ssh spark '<comando remoto>'
- Usar siempre
sshpass -e(lee la password de la variable de entornoSSHPASS), nuncasshpass -p "$SPARK_PASSWORD"— ese flag deja la password visible en la lista de procesos (ps). - Para comandos multilínea o con comillas complejas, usar un heredoc remoto en vez de escapar comillas:
SSHPASS="$SPARK_PASSWORD" sshpass -e ssh spark bash -s <<'EOF' comando1 comando2 EOF
3. Rutas — proyectos compartidos
Si el comando remoto opera sobre un proyecto que también existe localmente en ~/projects/<nombre>, la
ruta equivalente en spark es /mnt/docker-nas/projects/<nombre>.
- Para editar código de esos proyectos, preferir las tools locales (Read/Edit) ya que es el mismo filesystem — no hace falta editar por SSH.
- Usar SSH solo para ejecutar cosas que realmente necesitan correr en spark (builds, procesos, comandos específicos del entorno/hardware de spark, por ejemplo GPU/Spark jobs).
Seguridad
- Nunca imprimir, loggear ni commitear el valor de
$SPARK_PASSWORD. - Aplican las reglas generales de acciones riesgosas: confirmar con el usuario antes de ejecutar en spark
comandos destructivos o de alto impacto (
rm -rf,docker rm/docker system prune,kill -9, reinicios de servicios, etc.).