Visual Studio Code/fr: Difference between revisions
No edit summary |
No edit summary |
||
Line 118: | Line 118: | ||
* utilisez wget (https://github.com/microsoft/vscode-remote-release/issues/10174#issuecomment-2316093550) en ajoutant "remote.SSH.useCurlAndWgetConfigurationFiles: true" aux paramètres de Remote-SSH, ce qui remplace la fonction défectueuse de SCP, | * utilisez wget (https://github.com/microsoft/vscode-remote-release/issues/10174#issuecomment-2316093550) en ajoutant "remote.SSH.useCurlAndWgetConfigurationFiles: true" aux paramètres de Remote-SSH, ce qui remplace la fonction défectueuse de SCP, | ||
* 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 | * 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 [https://code.visualstudio.com/docs/remote/tunnels Developing with Remote Tunnels]). | ||
=Pour plus d'information= | =Pour plus d'information= |
Latest revision as of 17:06, 18 September 2024
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
- Si ce n’est pas déjà fait, générez votre clé SSH; ici nous l’appelons ~/.ssh/ccdb.
- Si ce n’est pas déjà fait, ajoutez votre clé publique SSH dans CCDB.
- 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 :
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
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
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 :
- Vérifiez que VS Code Server est installé comme décrit ci-dessus.
- Dans un client SSH externe connecté à la grappe, lancez une tâche interactive avec
salloc
.- Important : demandez au moins 2000M de mémoire.
- Notez le nom du nœud de calcul alloué.
- Si vous avez besoin de travailler avec des variables d'environnement
SLURM_*
dans VS Code, sauvegardez-les toutes dans un fichier à sourcer.[name@server ~]$ env | grep SLURM_ | sed -e 's/^\(.*\)=\(.*\)$/export \1="\2"/g' > slurm_var.sh
- Dans VS Code, lancez une nouvelle session à distance portant le nom du nœud de calcul alloué :
- Appuyez sur
F1
ouCtrl+Shift+P
pour faire afficher l’invite de commande>
dans la palette des commandes. - Commencez à écrire Remote et sélectionnez Remote-SSH: Connect to Host... > Remote-SSH: Connect to Host...
- Entrez le nom du nœud de calcul alloué.
- Si on vous demande quel est le système d’exploitation, sélectionnez Linux.
- Appuyez sur
- 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 fichierslurm_var.sh
.[name@server ~]$ source slurm_var.sh
Dépannage
Session à distance qui ne fonctionne plus
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 k
kill <PID>
>) tous les processus VS Code que vous voyez dans la sortie deps aux | grep $USER
ou detop -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 wget (https://github.com/microsoft/vscode-remote-release/issues/10174#issuecomment-2316093550) en ajoutant "remote.SSH.useCurlAndWgetConfigurationFiles: true" aux paramètres de Remote-SSH, ce qui remplace la fonction défectueuse de SCP,
- 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
- Webinaire SHARCNET présenté par Armin Sobhani, Remote Development on Clusters with VSCode
- Tutoriel produit par deux de nos utilisateurs (visionnement en 720p recommandé) :