Exercice - Créer un script cloud-init à utiliser avec Azure CycleCloud

Effectué

Lors de l’approvisionnement de nœuds pour un cluster, vous pouvez peut-être effectuer des tâches de configuration personnalisées pendant le processus de démarrage du système d’exploitation, avant que les modifications pilotées par le planificateur prennent effet. Ces tâches peuvent inclure, par exemple, la mise à jour des variables d’environnement de chemin d’accès, la configuration des paramètres de résolution de noms DNS (Domain Name System) ou la liaison de nœuds à un domaine Microsoft Entra Domain Services (AD DS).

Pour implémenter cette fonctionnalité, vous décidez d’explorer l’utilisation de cloud-init dans les clusters Azure CycleCloud et de la tester avec un script Bash simple qui modifie le contenu d’un fichier local sur chaque nœud. Vous envisagez de valider le résultat en vous connectant aux nœuds de cluster et en examinant le contenu des fichiers modifiés.

Remarque

Lors de la création de scripts cloud-init, vous pouvez utiliser n’importe quelle méthode de script ou de configuration que le système d’exploitation s’exécutant sur des nœuds cibles peut reconnaître et traiter, y compris le script d’interpréteur de commandes traditionnel, Python et YAML.

Dans cet exercice, vous allez effectuer les tâches suivantes :

  • Tâche 1 : Configurer l’authentification SSH sur des nœuds de cluster Azure CycleCloud
  • Tâche 2 : Ajouter un script cloud-init aux nœuds du cluster
  • Tâche 3 : Vérifier la fonctionnalité cloud-init sur le nœud du planificateur
  • Tâche 4 : Vérifier la fonctionnalité cloud-init sur les nœuds de calcul
  • Tâche 5 : Nettoyer l’environnement d’exercice

Remarque

Avant de commencer cet exercice, vous devez avoir terminé avec succès l’exercice précédent.

Tâche 1 : Configurer l’authentification SSH sur des nœuds de cluster Azure CycleCloud

Pour valider l’exécution des scripts cloud-init, vous vous connecterez aux nœuds de cluster avec Azure CycleCloud CLI à partir d’Azure Cloud Shell. Cette connexion s’appuie sur l’authentification basée sur des clés SSH. Vous devez donc charger la clé privée correspondant à la clé publique distribuée aux nœuds de cluster dans le répertoire de base Azure Cloud Shell.

  1. Accédez au portail Azure et, lorsque vous y êtes invité, authentifiez-vous auprès d’un compte Microsoft ou d’un compte Microsoft Entra qui a le rôle Contributeur ou Propriétaire dans l’abonnement Azure que vous utilisez dans ce module.

  2. Dans le portail Azure, ouvrez Cloud Shell en sélectionnant son icône dans la barre d’outils en regard de la zone de recherche et vérifiez que vous exécutez une session Bash.

  3. Dans le volet Azure Cloud Shell , dans la barre d’outils du volet, sélectionnez la quatrième icône affichant une page avec une paire de flèches verticales pointant dans les directions opposées. Ensuite, dans le menu déroulant, sélectionnez Charger.

  4. Dans la boîte de dialogue Ouvrir , accédez à l’emplacement du fichier .pem contenant la clé privée, puis sélectionnez Ouvrir.

  5. Exécutez les commandes suivantes dans Cloud Shell pour déplacer le fichier .pem chargé vers l’emplacement approprié et configurer les autorisations de niveau fichier nécessaires (remplacez l’espace <private_key.pem> réservé par le nom du fichier .pem ) :

    mkdir -p ~/.ssh
    mv private_key.pem ~/.ssh
    chmod 600 ~/.ssh/cc-ssh-keys.pem
    

Tâche 2 : Ajouter un script cloud-init aux nœuds du cluster

L’option permettant d’ajouter des scripts aux nœuds de cluster est disponible directement à partir de l’interface graphique Azure CycleCloud. Vous l’utiliserez pour affecter le même script cloud-init au planificateur et aux nœuds de calcul et vérifier ses fonctionnalités. Le script ajoute une entrée 10.10.10.10 cc.contoso.com au fichier /etc/hosts .

  1. Si vous n’êtes pas encore connecté à l’application web Azure CycleCloud, ouvrez une autre fenêtre de navigateur et accédez à l’URL https://< IP_address> . Si vous y êtes invité, confirmez que vous voulez continuer.

  2. Si vous êtes invité à vous authentifier, connectez-vous en fournissant des informations d’identification de votre compte d’utilisateur d’application Azure CycleCloud avec le rôle Administrateur.

  3. Dans l’interface graphique d’Azure CycleCloud, accédez à la page Clusters. Dans la liste des clusters, sélectionnez l’entrée contoso-custom-slurm-lab-cluster, puis sélectionnez Modifier.

  4. Dans la fenêtre contextuelle Modifier contoso-custom-slurm-lab-cluster , sélectionnez l’entrée Cloud-init et, dans l’onglet planificateur de la section configuration cloud-init , entrez le script suivant :

    #!/bin/bash
    echo "10.10.10.10 www.contoso.com" >> /etc/hosts
    

    Capture d’écran de l’onglet Cloud-init de la fenêtre contextuelle Modifier contoso-custom-slurm-lab-cluster dans l’application web Azure CycleCloud.

  5. Dans la même fenêtre contextuelle, avec l’entrée Cloud-init sélectionnée, sélectionnez chacun des onglets restants (y compris cuda, hpc et htc) et entrez le même script. Sélectionnez Enregistrer.

Tâche 3 : Vérifier la fonctionnalité cloud-init sur le nœud du planificateur

Pour vérifier la fonctionnalité cloud-init sur le nœud du planificateur, vous démarrez le cluster. Ceci va déclencher le provisionnement du nœud de planificateur. Une fois le nœud en cours d’exécution, vous pourrez vous y connecter à partir d’Azure Cloud Shell et vérifier que le fichier /etc/hosts contient l’entrée 10.10.10.10 www.contoso.com.

  1. Dans la fenêtre du navigateur affichant l’application web Azure CycleCloud, sélectionnez le lien Démarrer dans la page contoso-custom-slurm-lab-cluster . Quand vous êtes invité à confirmer, sélectionnez OK.

    Remarque

    Si le cluster est déjà en cours d’exécution, vous devez l’arrêter et le redémarrer pour appliquer la configuration mise à jour, sinon cette configuration ne sera pas visible dans les étapes suivantes.

  2. Dans la liste des nœuds, sélectionnez l’entrée Scheduler et surveillez son état dans le volet Détails, en attendant qu'elle passe de Acquisition à Prêt.

    Remarque

    Ceci peut prendre environ trois minutes.

  3. Dans le volet Détails , sélectionnez Se connecter. Dans la fenêtre contextuelle Se connecter au nœud : planificateur , dans la section Utilisation de l’interface CLI CycleCloud , sélectionnez l’entrée contenant la commande qui vous permet de vous connecter au nœud du planificateur, puis sélectionnez Fermer :

    Capture d’écran de la fenêtre contextuelle Se connecter au nœud : planificateur dans l’application web Azure CycleCloud.

    Remarque

    La commande doit avoir le format cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster

  4. Basculez vers la fenêtre du navigateur web avec le volet Cloud Shell et exécutez la commande que vous avez copiée à l’étape précédente.

    Remarque

    La commande doit générer une sortie au format suivant :

    m@Azure:~$ cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster
    Connecting to cc-admin@40.87.52.25 (contoso-custom-slurm-lab-cluster scheduler) using SSH
    [cc-admin@ip-0A000304 ~]$
    
  5. Lorsque vous êtes connecté au nœud du planificateur, exécutez la commande suivante pour vérifier que le fichier /etc/hosts contient l’entrée 10.10.10.10.10 www.contoso.com:

    grep "10.10.10.10 www.contoso.com" /etc/hosts
    

    Remarque

    La commande doit générer une sortie au format suivant :

    [cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts
    10.10.10.10 www.contoso.com
    

Tâche 4 : Vérifier la fonctionnalité cloud-init sur les nœuds de calcul

Vous allez maintenant répéter la séquence équivalente d’étapes pour vérifier la fonctionnalité cloud-init sur les nœuds de calcul.

Important

Avant de pouvoir appliquer la procédure équivalente pour vérifier la fonctionnalité cloud-init sur les nœuds de calcul, vous devez supprimer et réallouer l'ensemble d'échelles de machines virtuelles correspondant. Cette étape est spécifique aux clusters Slurm, car, dans ce cas, l’intégration de la mise à l’échelle automatique du planificateur nécessite qu’Azure CycleCloud préremplit les nœuds de calcul. Par conséquent, la configuration cloud-init que vous avez appliquée précédemment dans cet exercice n’affecterait pas les nœuds existants.

  1. Lors de la connexion au nœud du planificateur, exécutez les commandes suivantes dans Cloud Shell pour supprimer et réallouer les nœuds de calcul dans votre cluster Azure CycleCloud et terminer la connexion au nœud du planificateur :

    sudo -i
    cd /opt/cycle/jetpack/system/bootstrap/slurm
    ./cyclecloud_slurm.sh remove_nodes
    ./cyclecloud_slurm.sh scale
    exit
    exit
    

    Remarque

    Vous recevrez des messages indiquant que tentative de suppression des nœuds ci-dessous suivie de mise à l’échelle du cluster terminée une fois cette étape terminée.

  2. Sur votre ordinateur, basculez vers la fenêtre du navigateur web affichant la page contoso-custom-slurm-lab-cluster de l’application web Azure CycleCloud. Sous l’onglet Nœuds , sélectionnez la ligne htc , puis, dans le volet Détails , sélectionnez l’entrée htc-1 , puis sélectionnez l’en-tête de l’onglet Actions . Dans le menu déroulant, sélectionnez Démarrer, puis sélectionnez OK lorsque vous y êtes invité à confirmer.

    Capture d’écran du menu Actions sur la page contoso-custom-slurm-lab-cluster dans l’application web Azure CycleCloud.

  3. Dans le volet Détails , surveillez le nœud nouvellement démarré et attendez que son état passe de l’acquisition à prêt.

    Remarque

    Ceci peut prendre environ trois minutes.

  4. Dans le volet Détails , sélectionnez Se connecter. Dans la fenêtre contextuelle Se connecter au nœud : htc-1 , sélectionnez l’entrée dans la section Utilisation de l’interface CLI CycleCloud contenant la commande vous permettant de vous connecter au nœud du planificateur, puis sélectionnez Fermer :

    Capture d’écran de la fenêtre contextuelle Se connecter au nœud : htc-1 dans l’application web Azure CycleCloud.

    Remarque

    La commande doit avoir le format cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.

  5. Basculez vers le volet Cloud Shell et exécutez la commande que vous avez copiée à l’étape précédente.

    Remarque

    La commande doit générer une sortie au format suivant :

    m@Azure:~$ cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster
    Connecting to cc-admin@10.0.3.5 (contoso-custom-slurm-lab-cluster htc-1) through SSH bastion at cc-admin@40.87.52.25
    [cc-admin@ip-0A000305 ~]$
    
  6. Lorsque vous êtes connecté au nœud htc-1 , exécutez la commande suivante pour vérifier que le fichier /etc/hosts contient l’entrée 10.10.10.10.10 www.contoso.com:

    cat /etc/hosts | grep "10.10.10.10 www.contoso.com"
    

    Remarque

    Vous devez supprimer toutes les ressources que vous avez déployées dans ces exercices et les exercices précédents de ce module une fois que vous atteignez ce point. Cela vous permet d’éviter les frais associés à la maintenance de ces ressources par rapport à votre abonnement Azure.

Tâche 5 : Nettoyer l’environnement de laboratoire

Votre test de personnalisation du cluster à l’aide de l’application Azure CycleCloud est terminé. Pour éviter les coûts inutiles associés à l’utilisation des ressources Azure, vous allez maintenant mettre fin au cluster et supprimer toutes les ressources que vous avez approvisionnées dans les exercices de ce module.

  1. Dans le navigateur web affichant l’interface graphique de l’application web Azure CycleCloud, sélectionnez le lien Terminate sur la page contoso-custom-slurm-lab-cluster , puis, lorsque vous êtes invité à confirmer, sélectionnez OK.

  2. Supervisez le processus d’arrêt.

    Remarque

    Le processus implique la déprovisionnement de la machine virtuelle Azure servant le rôle du nœud principal du cluster. Ceci peut durer environ cinq minutes.

    Remarque

    Pour supprimer toutes les autres ressources que vous avez configurées dans ce labo, vous allez supprimer les groupes de ressources hébergeant les ressources du cluster.

  3. Dans le portail Azure, accédez au panneau des ressources du groupe de ressources hébergeant des ressources de cluster, sélectionnez l’entrée Supprimer le groupe de ressources dans la barre d’outils. Dans la zone de texte Entrer le nom du groupe de ressources pour confirmer la suppression , entrez le nom du groupe de ressources, puis sélectionnez Supprimer. Sélectionnez à nouveau Supprimer pour confirmer la suppression.

    Remarque

    Il peut y avoir des groupes de ressources supplémentaires associés à vos ressources Slurm. Pour éviter des frais supplémentaires, veillez à supprimer tous ces groupes de ressources liés à Slurm et à leurs ressources.

Félicitations! Vous avez terminé le troisième et dernier exercice de ce module. Dans cet exercice, vous avez exploré l’utilisation de cloud-init dans des clusters Azure CycleCloud et l’avez testé avec un script Bash simple qui a modifié le contenu d’un fichier local sur chaque nœud. Vous avez validé le résultat en vous connectant aux nœuds de cluster et en examinant le contenu des fichiers modifiés. Ensuite, vous avez arrêté le cluster et supprimé toutes les ressources de cluster que vous avez utilisées dans ce module pour éviter les coûts inutiles.