Actualmente, Visual Studio Code (en adelante, VSC) es uno de los IDE (entorno de desarrollo integrado) mas utilizado por los desarrolladores de software debido a la existencia de múltiples complementos de que dispone, su diseño sencillo y practico de utilizar y su compatibilidad con diversas plataformas y lenguajes de programación además de ser un software disponible de forma gratuita.
Este tutorial se centra en el uso del complemento Remote-SSH para habilitar el desarrollo remoto de software en el HPC Drago y la ejecución de código orientado al cálculo científico mediante el acceso a los nodos de cómputo de forma interactiva.
Para llevar a cabo este procedimiento, el usuario deberá disponer de:
• Una cuenta en el HPC Drago
• Un PC local con Windows, Linux o MacOS.
• El software Visual Studio Code correctamente instalado. Si no se dispone
de él, se puede descargar desde el sitio oficial.
Dado que es necesario identificarse varias veces, también se recomienda
disponer de un par de claves RSA para identificarse.
Una vez se dispone de todos los requisitos, lo primero que se debe hacer es instalar el complemento Remote-SSH que nos va a permitir establecer conexiones ssh con maquinas remotas. Para ello, abrimos el VSC y pinchamos en el icono de extensiones, como se muestra en la siguiente imagen.
A continuación, rellenamos la casilla que aparece con “remote-ssh”
Y aparecerá el complemento que buscamos con el botón de “install” que nos permite instalarlo directamente.
Una vez realizada la instalación aparecerá en la ventana centra la información
completa del plugin. Con todo esto listo, ya se puede cerrar la ventana pulsando sobre la “X” de la extensión.
Este paso se puede realizar mediante cualquier terminal o software (putty,mobaXterm, etc.) y consiste en establecer una conexión con el HPC Drago mediante nuestro usuario y contraseña o mediante la clave RSA. Puesto que también puede ser realizado directamente con VSC, se explica cómo hacerlo de esta manera.
3.1. Conexión a Drago con VSC
Con el VSC abierto, pulsamos sobre el botón azul que aparece en la parte inferior de la ventana.
Esto despliega una lista de opciones en la parte superior de la ventana, donde seleccionamos “connect to Host”
Seleccionamos “Add New SSH Host…” y VSC nos solicita el comando de conexión ssh.
Introducimos el comando “ssh nombreususario@drago.csic.es”
sustituyendo nombreusuario por nuestro usuario en Drago.
VSC almacena las configuraciones de las conexiones que se establecen por lo que nos pregunta donde queremos almacenarlo. Para ello, escogemos la primera opción acabada en “.ssh/config”
Pulsando sobre el botón “Connect”, Se nos solicitará la contraseña denuestro usuario de Drago.
Este paso será necesario realizarlo varias veces según lo solicite el VSC.
Por ejemplo, si queremos mostrar los ficheros que manejamos en Drago mediante el explorador de VSC, pulsando “Open folder”
Una vez realizado, podremos comprobar que estamos conectados a
Drago, tanto en el propio explorador del VSC como en el botón de conexiones remotas.
Si queremos introducir comandos en Drago a partir de aquí, basta con abrir un nuevo terminal en esta misma ventana de VSC e introducir comandos comocon cualquier otro terminal con el que accedemos a Drago.
(CUIDADO: TODAVIA ESTAMOS EN EL NODO DE LOGIN, NO HACER
CALCULOS EN ESTE TERMINAL)
3.2. Reserva de recursos con VSC
Una vez disponemos de una conexión a Drago, utilizaremos la instrucción salloc para reservar los recursos que deseamos en el terminal conectado a Drago. Por ejemplo, en la siguiente imagen, se solicitan 10 cores en un único nodo con una memoria de 40 Gb y durante un tiempo máximo de 2 horas.
Hay que tener en cuenta que, en Drago, solo la cola de trabajo express permite solicitar recursos de forma interactiva. Cuando los recursos están disponibles, estos se nos asignan y el terminal muestra el nodo de computo al que nos podemos conectar. En la siguiente imagen se muestra que el nodo de
cómputo asignado es drago31010008
Con los recursos asignados, ya podemos establecer una nueva conexión a este nodo. Sin embargo, puesto que los nodos de computo no disponen de una dirección IP publica, es necesario identificarse a través del nodo de login.
3.3. Configuración de la conexión al nodo de computo
La primera vez que nos conectamos, de forma interactiva, a cada uno de los nodos de cómputo en Drago, es necesario configurar dicha conexión. Puesto que los nodos de cómputo no disponen de una dirección IP publica, es necesario que dicha atenticacion la realice el nodo de login. Para ello, abrimos el fichero de configuración ssh en una nueva ventana de VSC.
(OJO: NO CERRAR LA CONEXIÓN DE DRAGO DONDE SE HAN SOLICITADO
LOS RECURSOS YA QUE ENTONCES DEJAN DE ESTAR DISPONIBLES PARA
NOSOTROS!!)
Editamos el fichero añadiendo la configuración de la conexión ssh al nodo de cómputo (en este caso drago31010008). Importante que incluya la línea “ProxyJump drago.csic.es” ya que indica que la autenticación la debe hacer el nodo de login.
Una vez completada la configuración, y con los recursos asignados en la otra ventana del VSC, ya podemos conectarnos al nodo de cómputo. En este caso, se nos solicitara varias veces la contraseña por lo que se recomienda configurar una clave RSA para evitarlo.
3.4. Configuración clave RSA
Debido a que es necesario identificarse en reiteradas ocasiones para poder conectar VSC con un nodo de cómputo, es muy recomendable utilizar una clave RSA para identificarse.
Para ello, basta con editar el fichero de configuración “config” disponibleen la “carpeta de usuario/.ssh/config” tal cual se ha mostrado anteriormente.
Se va a suponer que disponemos de una clave RSA propia con la que nos conectamos a Drago (ver información RSA en el portal de documentación AIC de las SGAI).
Una vez abierto el fichero de configuración ssh, añadimos la ubicación de nuestra clave privada RSA añadiendo la línea **IdentityFile” ubicación de la clave RSA privada”**al final de cada conexión de Drago existente.
Una vez realizado, ya no será necesario introducir la contraseña para identificarse en cada conexión establecida.
En este punto, si ya de los recursos asignados en el nodo de cómputo, solo hace falta conectarse mediante otra ventana a dicho nodo.
Para ello, abrimos una nueva ventana de VSC (o utilizamos otra que tengamos abierta que no sea la de conexión al nodo de login de drago)
Pulsamos sobre el botón de nueva conexión remota ssh y seleccionamos “Connect to Host…”
Si está correctamente configurado, aparecerá la conexión al nodo de computo, así que la seleccionamos.
Y se establecerá la conexión al nodo de cómputo con los recursos asignados como podemos ver en la siguiente imagen.
Si hemos configurado la clave RSA correctamente este paso es automático. En caso contrario puede ser necesario introducir la contraseña del usuario de Drago varias veces.
En cualquier caso, lo que se ejecute en esta ventana (mientras dispongamos de los recursos solicitados) se ejecutará en el nodo de computo de Drago y no en nuestro PC local.
¡AGRADIMIENTO!: Gracias por la colaboración a David López al aportar este manual sobre Visual Code.