Files

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 spark ya está configurado en ~/.ssh/config (HostName <<SPARK_IP_1>>, User aleleba) — nunca hace falta especificar user/host, basta ssh spark.
  • spark no acepta autenticación por key, solo por password. La password vive en la variable de entorno $SPARK_PASSWORD de este entorno de desarrollo.
  • ssh no tiene ninguna forma nativa de pasar una password por flag (-p es el puerto, no la password) — por eso se usa sshpass para 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 entorno SSHPASS), nunca sshpass -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.).