Visual Studio Code

Revision as of 17:06, 18 September 2024 by Diane27 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Other languages:

Visual Studio Code est un environnement de développement intégré (IDE pour integrated development environment) de Microsoft qui peut être utilisé pour faire du développement à distance via SSH sur nos grappes. Vous pouvez installer Visual Studio Code sur votre ordinateur et vous connecter à une grappe où vous effectuerez du débogage et des tests. Visual Studio Code s'adapte à plusieurs langages de programmation, mais nous utiliserons ici Python.

Avec un environnement polyvalent et modulaire comme Visual Studio Code, il faut faire attention au type d’action que vous faites. La modification d’un script Python ou de tout autre fichier texte de taille raisonnable (quelques milliers de lignes) est un processus léger qui utilise peu de puissance de traitement ou de mémoire. Par contre, cet environnement offre plusieurs autres fonctionnalités avancées telles que la possibilité de déboguer votre script à distance. Dans ce cas, l’environnement démarre l’exécution du script Python sur la grappe, ce qui crée une charge de calcul significative sur potentiellement plusieurs CPU si le script ou les bibliothèques qu’il utilise sont multifil.

Remarque : Quand vous utilisez Visual Studio Code avec Python, évitez d'installer Conda et ses variantes en raison de leur mauvaise adaptation à l'environnement de nos grappes. Plutôt que d'utiliser Conda, utilisez un environnement virtuel Python ou utilisez un conteneur Apptainer.

Configurer l'accès à distance

Configuration de vos clés SSH

  1. Si ce n’est pas déjà fait, générez votre clé SSH; ici nous l’appelons ~/.ssh/ccdb.
  2. Si ce n’est pas déjà fait, ajoutez votre clé publique SSH dans CCDB.
  3. Copiez la clé publique dans ~/.ssh/authorized_keys sur le serveur distant; créez ce fichier s’il n’existe pas déjà. Ceci est nécessaire parce que les nœuds de connexion n'ont pas accès aux clés publiques entrées dans CCDB.

Fichier de configuration SSH

VS Code fonctionne bien avec votre fichier de configuration SSH local (~/.ssh/config). Les options recommandées sont :

File : ~/.ssh/config

Host *
  ServerAliveInterval 300

Host beluga cedar graham narval
  HostName %h.alliancecan.ca
  IdentityFile ~/.ssh/ccdb
  User your_username

Host bc????? bg????? bl?????
  ProxyJump beluga
  IdentityFile ~/.ssh/ccdb
  User your_username

Host cdr*
  ProxyJump cedar
  IdentityFile ~/.ssh/ccdb
  User your_username

Host gra1* gra2* gra3* gra4* gra5* gra6* gra7* gra8* gra9*
  ProxyJump graham
  IdentityFile ~/.ssh/ccdb
  User your_username

Host nc????? ng????? nl?????
  ProxyJump narval
  IdentityFile ~/.ssh/ccdb
  User your_username


Connexion initiale

Accès à distance et modification du code

https://carleton.ca/scs/2023/vscode-remote-access-and-code-editing/

Puisque certaines grappes ne permettent pas l’accès à internet via les nœuds de calcul, il faut d’abord installer Visual Studio Code Server avant de se connecter à distance à un nœud de calcul. Il faut donc effectuer une connexion initiale à un nœud frontal. Sélectionnez la grappe sur laquelle vous voulez travailler :

  • beluga
  • cedar
  • graham
  • narval
Invite pour la phrase de passe SSH

Remarque : L’invite à entrer votre phrase de passe sera affichée à plusieurs reprises. Si ce n'est pas le cas, copiez votre clé publique comme indiqué au point 3 de Configuration de vos clés SSH ci-dessus.

À votre connexion initiale, VS Code Server sera installé dans ~/.vscode-server/, ce qui peut prendre jusqu’à 5 minutes. Lorsque c’est terminé, fermez la connexion.

Se connecter avec l’authentification multifacteur

À la connexion, cliquez sur details pour faire afficher dans le terminal l’invite pour l’entrée du deuxième facteur

Si l’authentification multifacteur est demandée, cliquez sur details pour faire afficher le terminal VS Code Terminal où vous pourrez entrer le second facteur.

Fermer la connexion

Lors de la fermeture de la fenêtre de VS Code locale, le processus distant de VS Code Server peut continuer à s'exécuter en arrière-plan, ce qui a tendance à accumuler des processus orphelins sur le nœud de connexion. De plus, votre prochaine connexion pourrait se faire à un nœud de connexion différent, ce qui causerait des problèmes et de la confusion. Pour fermer proprement la connexion, cliquez sur le coin inférieur gauche de VS Code et sélectionnez Close Remote Connection dans le haut de la fenêtre.

Se connecter à un nœud de calcul

Étapes à suivre :

  1. Vérifiez que VS Code Server est installé comme décrit ci-dessus.
  2. Dans un client SSH externe connecté à la grappe, lancez une tâche interactive avec salloc.
    1. Important : demandez au moins 2000M de mémoire.
    2. Notez le nom du nœud de calcul alloué.
    3. Si vous avez besoin de travailler avec des variables d'environnement SLURM_* dans VS Code, sauvegardez-les toutes dans un fichier à sourcer.
      Question.png
      [name@server ~]$ env | grep SLURM_ | sed -e 's/^\(.*\)=\(.*\)$/export \1="\2"/g' > slurm_var.sh
      
  3. Dans VS Code, lancez une nouvelle session à distance portant le nom du nœud de calcul alloué :
    1. Appuyez sur F1 ou Ctrl+Shift+P pour faire afficher l’invite de commande > dans la palette des commandes.
    2. Commencez à écrire Remote et sélectionnez Remote-SSH: Connect to Host... > Remote-SSH: Connect to Host...
    3. Entrez le nom du nœud de calcul alloué.
      1. Si on vous demande quel est le système d’exploitation, sélectionnez Linux.
  4. Si vous avez besoin de travailler avec des variables d'environnement SLURM_*, allez au répertoire de travail dans un terminal VS Code et sourcez le fichier slurm_var.sh.
    Question.png
    [name@server ~]$ source slurm_var.sh
    

Dépannage

Session à distance qui ne fonctionne plus

Problèmes de connexion

Les plus récentes versions de VS Code Server ne supportent plus CentOS 7, ce qui affecte les connexions à Graham et Niagara. Vous pouvez modifier votre version de VS Code pour 1.86.1 ou plus récente; cependant, vous recevrez des avertissements au sujet du système d'exploitation qui n'est pas supporté.



  • Remarque : une version moins récente de VS Code fonctionne toujours via JupyterHub.

Étant donné que VS Code est destiné à un usage autre que le développement directement sur nos grappes, l'exécution de plusieurs instances de VS Code Server sur différents nœuds de connexion peut entraîner des problèmes. Pour contourner ceci :

  • Connectez-vous à tous les nœuds de connexion et arrêtez (avec kkill <PID>>) tous les processus VS Code que vous voyez dans la sortie de ps aux | grep $USER ou de top -u $USER.
  • Si le problème persiste, supprimez prudemment le contenu du répertoire code>~/.vscode-server, puis reconnectez-vous pour refaire l’installation automatique de VS Code Server.
  • En août 2024, nous avons découvert un bogue dans l'extension Remote-SSH pour VS Code. Nous croyons que Secure Copy (SCP) ne fonctionne pas correctement. Comme il ne s'agit pas d'un de nos logiciels mais plutôt d'un produit de Microsoft, nous ferons ce qui nous est possible pour résoudre les problèmes.

Pour plus d'information sur le bogue, cliquez sur

https://github.com/microsoft/vscode-remote-release/issues/10174#issuecomment-2316629187

Les solutions recommandées sont

  • utilisez la version VSCode 1.92 moins récente,
  • utilisez l'extension "Remote Tunnels" en exécutant 'code tunnel' (sur Google, cherchez et téléchargez vscode cli). Avec github ou avec un compte Microsoft (OAuth), connectez-vous à un serveur vscode distant, par exemple à un nœud de connexion de Niagara. Pendant que le serveur est actif, vous n'aurez pas besoin de l'étape d'authentification multifacteur (voir Developing with Remote Tunnels).

Pour plus d'information