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

Effectué

Lors du provisionnement de nœuds pour un cluster, vous souhaitez pouvoir effectuer des tâches de configuration personnalisées pendant le processus de démarrage du système d’exploitation, avant que des modifications pilotées par un planificateur ne prennent effet. Ces tâches peuvent inclure par exemple la mise à jour des variables d’environnement de chemin, 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 prévoyez de vérifier le résultat en vous connectant aux nœuds du cluster et en examinant le contenu des fichiers modifiés.

Notes

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 les nœuds cibles peut reconnaître et traiter, notamment les scripts de shell traditionnels, Python et YAML.

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

  • Tâche 1 : Configurer l’authentification SSH sur les nœuds de cluster Azure CycleCloud
  • Tâche 2 : Ajouter un script cloud-init aux nœuds de 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 de l’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 les nœuds de cluster Azure CycleCloud

Pour valider l’exécution de scripts cloud-init, vous allez vous connecter aux nœuds de cluster avec l’interface CLI d’Azure CycleCloud depuis Azure Cloud Shell. Cette connexion s’appuie sur l’authentification par clé SSH : vous devez donc charger la clé privée correspondant à la clé publique distribuée sur les nœuds du cluster dans le répertoire de base d’Azure Cloud Shell.

  1. Accédez au portail Azure et, quand vous y êtes invité, authentifiez-vous avec un compte Microsoft ou un compte Microsoft Entra associé au 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 des 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 pour configurer les autorisations nécessaires au niveau des fichiers (remplacez l’espace réservé <private_key.pem> 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 de cluster

L’option permettant d’ajouter des scripts aux nœuds de cluster est disponible directement à partir de l’interface graphique d’Azure CycleCloud. Vous allez l’utiliser pour attribuer le même script cloud-init aux nœuds de planificateur et 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://<adresse_IP>. Si vous y êtes invité, confirmez que vous voulez continuer.

  2. Si vous êtes invité à vous authentifier, connectez-vous en fournissant les informations d’identification de votre compte d’utilisateur de l’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 de cloud-init, entrez le script suivant :

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

    Screenshot of the Cloud-init tab of the Edit contoso-custom-slurm-lab-cluster pop-up window in the Azure CycleCloud web application.

  5. Dans la même fenêtre contextuelle, avec l’entrée Cloud-init sélectionnée, sélectionnez chacun des autres onglets (y compris cuda, hpc et htc), puis 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 de planificateur, vous allez démarrer le cluster. Ceci va déclencher le provisionnement du nœud de planificateur. Une fois le nœud en cours d’exécution, vous pouvez 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 qui montre 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 Planificateur et surveillez son état dans le volet des Informations, jusqu’à ce qu’il passe de Acquisition à Prêt.

    Notes

    Ceci peut prendre environ trois minutes.

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

    Screenshot of the Connect to node: scheduler pop-up window in the Azure CycleCloud web application.

    Remarque

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

  4. Passez à 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. Quand vous êtes connecté au nœud de planificateur, exécutez la commande suivante pour vérifier que le fichier /etc/hosts contient l’entrée 10.10.10.10 www.contoso.com :

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

    Notes

    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 les fonctionnalités de cloud-init sur les nœuds de calcul.

Important

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

  1. En étant connecté au nœud de 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 pour mettre fin à la connexion au nœud de planificateur :

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

    Remarque

    Une fois cette étape terminée, vous voyez les messages indiquant Tentative de suppression des nœuds suivants, suivis de Remise à l’échelle du cluster effectuée.

  2. Sur votre ordinateur, accédez à la fenêtre du navigateur web qui montre 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 des Informations, 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 quand vous êtes invité à confirmer.

    Screenshot of the Actions menu on the contoso-custom-slurm-lab-cluster page in the Azure CycleCloud web application.

  3. Dans le volet des Informations, surveillez le nœud que vous venez de démarrer et attendez jusqu’à ce que son état passe de Acquisition à Prêt.

    Notes

    Ceci peut prendre environ trois minutes.

  4. Dans le volet des Informations, 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 de CycleCloud contenant la commande qui vous permet de vous connecter au nœud du planificateur et sélectionnez Fermer :

    Screenshot of the Connect to node: htc-1 pop-up window in the Azure CycleCloud web application.

    Remarque

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

  5. Passez au 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. Quand 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 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 cet exercice et les exercices précédents de ce module une fois que vous avez atteint ce point. Ceci vous permet d’éviter les frais liés à la conservation de ces ressources dans le cadre de votre abonnement Azure.

Tâche 5 : Nettoyer l’environnement du labo

Votre test de la personnalisation du cluster en utilisant l’application Azure CycleCloud est terminé. Pour éviter les coûts inutiles associés à l’utilisation de ressources Azure, vous allez maintenant arrêter le cluster et supprimez toutes les ressources que vous avez provisionnées dans les exercices de ce module.

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

  2. Supervisez le processus d’arrêt.

    Notes

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

    Notes

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

  3. Dans le portail Azure, accédez au panneau du groupe de ressources hébergeant les ressources du cluster, puis 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

    Des groupes de ressources supplémentaires peuvent être associés à vos ressources Slurm. Pour éviter des frais supplémentaires, veillez à supprimer tous ces groupes de ressources associés à Slurm et leurs ressources.

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