Övning – Skapa ett cloud-init-skript för användning med Azure CycleCloud
När du etablerar noder för ett kluster kanske du vill kunna utföra anpassade konfigurationsuppgifter under operativsystemets startprocess innan några scheduler-drivna ändringar börjar gälla. Dessa uppgifter kan till exempel omfatta uppdatering av sökvägsmiljövariabler, konfiguration av DNS-namnmatchningsinställningar (Domain Name System) eller bindning av noder till en Ad DS-domän (Microsoft Entra Domain Services).
För att implementera den här funktionen bestämmer du dig för att utforska användningen av cloud-init i Azure CycleCloud-kluster och testa den med ett enkelt Bash-skript som ändrar innehållet i en lokal fil på varje nod. Du tänker verifiera resultatet genom att ansluta till klusternoder och granska innehållet i de ändrade filerna.
Not
När du redigerar cloud-init-skript kan du använda alla skript eller konfigurationsmetoder som operativsystemet som körs på målnoder kan identifiera och bearbeta, inklusive traditionella gränssnittsskript, Python och YAML.
I den här övningen utför du följande uppgifter:
- Uppgift 1: Konfigurera SSH-baserad autentisering till Azure CycleCloud-klusternoder
- Uppgift 2: Lägga till ett cloud-init-skript till klusternoderna
- Uppgift 3: Verifiera funktionen cloud-init på scheduler-noden
- Uppgift 4: Verifiera funktionen cloud-init på beräkningsnoderna
- Uppgift 5: Rensa träningsmiljön
Notera
Kontrollera att du har slutfört föregående övning innan du påbörjar den här övningen.
Uppgift 1: Konfigurera SSH-baserad autentisering till Azure CycleCloud-klusternoder
För att verifiera körningen av cloud-init-skript ansluter du till klusternoder med Azure CycleCloud CLI från Azure Cloud Shell. Den här anslutningen förlitar sig på SSH-nyckelbaserad autentisering, så du måste ladda upp den privata nyckel som motsvarar den offentliga nyckeln som distribueras till klusternoder till Azure Cloud Shell-hemkatalogen.
Gå till Azure-portalenoch när du uppmanas, autentisera med ett Microsoft-konto eller ett Microsoft Entra-konto som har rollen Deltagare eller Ägare i den Azure-prenumeration som du använder i den här modulen.
Från Azure-portalen öppnar du Cloud Shell- genom att välja dess ikon i verktygsfältet bredvid sökrutan och se till att du kör en Bash-session.
I fönstret Azure Cloud Shell i fönstrets verktygsfält väljer du den fjärde ikonen som visar en sida med ett par lodräta pilar som pekar i motsatt riktning. I den nedrullningsbara menyn väljer du sedan Ladda upp.
I dialogrutan Öppna navigerar du till platsen för filen .pem som innehåller den privata nyckeln och väljer Öppna.
Kör följande kommandon i Cloud Shell för att flytta den uppladdade .pem--filen till rätt plats och konfigurera nödvändiga behörigheter på filnivå (ersätt platshållaren
<private_key.pem>
med namnet på filen .pem):mkdir -p ~/.ssh mv private_key.pem ~/.ssh chmod 600 ~/.ssh/cc-ssh-keys.pem
Uppgift 2: Lägga till ett cloud-init-skript till klusternoderna
Alternativet för att lägga till skript till klusternoderna är tillgängligt direkt från det grafiska gränssnittet Azure CycleCloud. Du använder det för att tilldela samma cloud-init-skript till schemaläggaren och beräkningsnoderna och verifiera dess funktioner. Skriptet lägger till en post 10.10.10.10 cc.contoso.com till filen /etc/hosts.
Om du ännu inte är ansluten till Azure CycleCloud-webbprogrammet öppnar du ett annat webbläsarfönster och navigerar till https://<IP_address> URL. Bekräfta att du vill fortsätta om du uppmanas att göra det.
Om du uppmanas att autentisera loggar du in genom att ange autentiseringsuppgifter för ditt Azure CycleCloud-programanvändarkonto med rollen Administratör.
I Azure CycleClouds grafiska gränssnitt navigerar du till sidan Kluster. I listan över kluster väljer du posten contoso-custom-slurm-lab-cluster och väljer sedan Redigera.
I popup-fönstret Redigera contoso-custom-slurm-lab-cluster väljer du posten Cloud-init och på fliken scheduler i avsnittet Cloud-init configuration anger du följande skript:
#!/bin/bash echo "10.10.10.10 www.contoso.com" >> /etc/hosts
I samma popup-fönster, med posten Cloud-init markerad, väljer du var och en av de återstående flikarna (inklusive cuda, hpcoch htc) och anger samma skript. Välj Spara.
Uppgift 3: Verifiera funktionen cloud-init på scheduler-noden
Om du vill verifiera funktionen cloud-init på scheduler-noden startar du klustret. Detta utlöser etablering av scheduler-noden. När noden har körts kan du ansluta till den från Azure Cloud Shell och kontrollera att filen /etc/hosts innehåller posten 10.10.10.10 www.contoso.com.
I webbläsarfönstret där Azure CycleCloud-webbprogrammet visas väljer du länken Starta på sidan contoso-custom-slurm-lab-cluster. När du uppmanas att bekräfta väljer du OK.
Not
Om klustret redan körs måste du avsluta och starta om det för att tillämpa den uppdaterade konfigurationen, annars visas inte konfigurationen i efterföljande steg.
I listan med noder väljer du posten Scheduler och övervakar dess status i fönstret Information och väntar tills den ändras från Hämta till Klar.
Not
Det kan ta ungefär tre minuter.
I fönstret Information väljer du Anslut. I popup-fönstret Anslut till nod: scheduler, i avsnittet Använda CycleCloud CLI, väljer du posten som innehåller kommandot för att ansluta till schemaläggningsnoden och väljer sedan Stäng.
Obs
Kommandot ska ha formatet
cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster
Växla till webbläsarfönstret med Cloud Shell-fönstret och kör kommandot som du kopierade i föregående steg.
Anteckning
Kommandot ska generera utdata i följande format:
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 ~]$
När du är ansluten till scheduler-noden kör du följande kommando för att kontrollera att filen /etc/hosts innehåller posten 10.10.10.10.10 www.contoso.com:
grep "10.10.10.10 www.contoso.com" /etc/hosts
Not
Kommandot ska generera utdata i följande format:
[cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts 10.10.10.10 www.contoso.com
Uppgift 4: Verifiera funktionen cloud-init på beräkningsnoderna
Nu ska du upprepa motsvarande sekvens med steg för att verifiera funktionen cloud-init på beräkningsnoderna.
Viktig
Innan du kan använda motsvarande procedur för att verifiera funktionen cloud-init på beräkningsnoderna måste du ta bort och omallokera motsvarande VM-skalningsuppsättning. Det här steget är specifikt för de Slurm-baserade klustren eftersom schemaläggarens autoskalningsintegrering i det här fallet kräver att Azure CycleCloud förpopulerar beräkningsnoderna. Därför påverkar inte den cloud-init-konfiguration som du använde tidigare i den här övningen redan befintliga noder.
När du är ansluten till scheduler-noden kör du följande kommandon i Cloud Shell för att ta bort och omallokera beräkningsnoderna i ditt Azure CycleCloud-kluster och avsluta anslutningen till scheduler-noden:
sudo -i cd /opt/cycle/jetpack/system/bootstrap/slurm ./cyclecloud_slurm.sh remove_nodes ./cyclecloud_slurm.sh scale exit exit
Not
Du får meddelanden om Fösöker ta bort följande noder följt av omskalning av kluster slutförd när steget har slutförts.
På din dator, växla till webbläsarfönstret som visar sidan contoso-custom-slurm-lab-cluster i Azure CycleCloud-webbprogrammet. På fliken Nodes väljer du raden htc och i fönstret Detaljer väljer du posten htc-1 och väljer sedan fliken Actions. I den nedrullningsbara menyn väljer du Startaoch väljer OK när du uppmanas att bekräfta.
I fönstret Information övervakar du den nyligen startade noden och väntar tills dess status ändras från Hämta till Klar.
Anteckning
Det kan ta ungefär tre minuter.
I fönstret Information väljer du Anslut. I popup-fönstret Anslut till nod: htc-1 väljer du posten i avsnittet Using the CycleCloud CLI som innehåller kommandot så att du kan ansluta till scheduler-noden och välja Stäng:
Notera
Kommandot ska ha formatet
cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster
.Växla till Cloud Shell-fönstret och kör kommandot som du kopierade i föregående steg.
Anteckning
Kommandot ska generera utdata i följande format:
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 ~]$
När du är ansluten till noden htc-1 kör du följande kommando för att kontrollera att filen /etc/hosts innehåller posten 10.10.10.10.10 www.contoso.com:
cat /etc/hosts | grep "10.10.10.10 www.contoso.com"
Anteckning
Du bör ta bort alla resurser som du har distribuerat i den här och tidigare övningar i den här modulen när du når den här punkten. På så sätt kan du undvika de avgifter som är associerade med att underhålla dessa resurser mot din Azure-prenumeration.
Uppgift 5: Rensa labbmiljön
Din testning av klusteranpassningen med hjälp av Azure CycleCloud-programmet har slutförts. För att undvika onödiga kostnader som är kopplade till användningen av Azure-resurser avslutar du nu klustret och tar bort alla resurser som du har etablerat under övningarna i den här modulen.
I webbläsaren som visar det grafiska gränssnittet för Azure CycleCloud-webbappen väljer du länken Avsluta på sidan contoso-custom-slurm-lab-cluster och väljer OKnär du uppmanas att bekräfta .
Övervaka avslutningsprocessen.
Not
Processen omfattar avetablering av den virtuella Azure-datorn som hanterar rollen för klustrets huvudnod. Det kan ta ungefär fem minuter.
Notera
Om du vill ta bort alla andra resurser som du har etablerat i den här labbuppgiften tar du bort de resursgrupper som är värdar för klusterresurserna.
I Azure-portalen går du till bladet för resursgruppen som är värd för klusterresurser och väljer posten Ta bort resursgrupp i verktygsfältet. I textrutan Ange resursgruppnamn för att bekräfta borttagningen anger du namnet på resursgruppen och väljer Ta bort. Välj Ta bort igen för att bekräfta borttagningen.
Not
Det kan finnas ytterligare resursgrupper som är associerade med dina Slurm-resurser. Undvik extra avgifter genom att ta bort alla dessa Slurm-relaterade resursgrupper och deras resurser.
Grattis! Du har slutfört den tredje och sista övningen i den här modulen. I den här övningen utforskade du användningen av cloud-init i Azure CycleCloud-kluster och testade den med ett enkelt Bash-skript som ändrade innehållet i en lokal fil på varje nod. Du verifierade resultatet genom att ansluta till klusternoder och granska innehållet i de ändrade filerna. Efteråt avslutade du klustret och tog bort alla klusterresurser som du använde i den här modulen för att undvika onödiga kostnader.