Ćwiczenie — tworzenie skryptu cloud-init do użycia z usługą Azure CycleCloud

Ukończone

Podczas aprowizowania węzłów dla klastra może być możliwe wykonanie niestandardowych zadań konfiguracyjnych podczas procesu rozruchu systemu operacyjnego, zanim zostaną zastosowane jakiekolwiek zmiany oparte na harmonogramie. Te zadania mogą obejmować na przykład aktualizowanie zmiennych środowiskowych ścieżki, konfigurowanie ustawień rozpoznawania nazw domen (DNS) lub wiązanie węzłów z domeną usług Microsoft Entra Domain Services (AD DS).

Aby zaimplementować tę funkcję, decydujesz się przeanalizować użycie pakietu cloud-init w klastrach Azure CycleCloud i przetestować go za pomocą prostego skryptu powłoki Bash, który modyfikuje zawartość pliku lokalnego na każdym węźle. Zamierzasz zweryfikować wynik, łącząc się z węzłami klastra i przeglądając zawartość zmodyfikowanych plików.

Notatka

Podczas tworzenia skryptów cloud-init można użyć dowolnej metody skryptów lub konfiguracji, którą system operacyjny działający na węzłach docelowych może rozpoznawać i przetwarzać, takie jak tradycyjne skrypty shellowe, Python i YAML.

W tym ćwiczeniu wykonasz następujące zadania:

  • Zadanie 1. Konfigurowanie uwierzytelniania opartego na protokole SSH na węzłach klastra usługi Azure CycleCloud
  • Zadanie 2. Dodawanie skryptu cloud-init do węzłów klastra
  • Zadanie 3. Weryfikowanie funkcji cloud-init w węźle harmonogramu
  • Zadanie 4. Weryfikowanie funkcji pakietu cloud-init w węzłach obliczeniowych
  • Zadanie 5. Czyszczenie środowiska ćwiczeń

Notatka

Przed rozpoczęciem tego ćwiczenia upewnij się, że poprzednie ćwiczenie zostało ukończone pomyślnie.

Zadanie 1. Konfigurowanie uwierzytelniania opartego na protokole SSH na węzłach klastra usługi Azure CycleCloud

Aby zweryfikować wykonywanie skryptów cloud-init, połączysz się z węzłami klastra przy użyciu interfejsu wiersza poleceń Azure CycleCloud z usługi Azure Cloud Shell. To połączenie opiera się na uwierzytelnianiu opartym na kluczach SSH, dlatego należy przekazać klucz prywatny odpowiadający kluczowi publicznemu dystrybuowane do węzłów klastra do katalogu głównego usługi Azure Cloud Shell.

  1. Przejdź do witryny Azure Portal i po wyświetleniu monitu uwierzytelnij się przy użyciu konta Microsoft lub konta Microsoft Entra, które ma rolę Współautor lub Właściciel w subskrypcji platformy Azure, której używasz w tym module.

  2. Na portalu Azure otwórz usługę Cloud Shell, wybierając jej ikonę na pasku narzędzi obok pola wyszukiwania i upewnij się, że uruchamiasz sesję Bash.

  3. W okienku usługi Azure Cloud Shell na pasku narzędzi okienka wybierz czwartą ikonę wyświetlającą stronę z parą pionowych strzałek wskazujących kierunek odwrotny. Następnie w menu rozwijanym wybierz pozycję Przekaż.

  4. W oknie dialogowym Otwieranie przejdź do lokalizacji pliku pem zawierającego klucz prywatny i wybierz pozycję Otwórz.

  5. Uruchom następujące polecenia w usłudze Cloud Shell, aby przenieść przekazany plik pem do poprawnej lokalizacji i skonfigurować niezbędne uprawnienia na poziomie pliku (zastąp <private_key.pem> symbol zastępczy nazwą pliku pem ):

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

Zadanie 2. Dodawanie skryptu cloud-init do węzłów klastra

Opcja dodawania skryptów do węzłów klastra jest dostępna bezpośrednio z interfejsu graficznego usługi Azure CycleCloud. Użyjesz go do przypisania tego samego skryptu cloud-init do węzłów harmonogramu i obliczeniowych oraz zweryfikowania jego funkcjonalności. Skrypt dodaje wpis 10.10.10.10.10 cc.contoso.com do pliku /etc/hosts .

  1. Jeśli nie masz jeszcze połączenia z aplikacją internetową Azure CycleCloud, otwórz kolejne okno przeglądarki i przejdź do adresu URL https://< IP_address> . Jeśli zostanie wyświetlony monit, upewnij się, że chcesz kontynuować.

  2. Jeśli zostanie wyświetlony monit o uwierzytelnienie, zaloguj się, podając poświadczenia konta użytkownika aplikacji Azure CycleCloud z rolą Administrator.

  3. W interfejsie graficznym usługi Azure CycleCloud przejdź do strony klastrów . Na liście klastrów wybierz wpis contoso-custom-slurm-lab-cluster , a następnie wybierz pozycję Edytuj.

  4. W oknie podręcznym Edytuj contoso-custom-slurm-lab-cluster, wybierz wpis Cloud-init, i na karcie scheduler w sekcji Konfiguracja Cloud-init wprowadź następujący skrypt:

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

    Zrzut ekranu przedstawiający kartę Cloud-init w oknie wyskakującym Edytuj contoso-custom-slurm-lab-cluster w aplikacji internetowej Azure CycleCloud.

  5. W tym samym oknie podręcznym z wybranym wpisem Cloud-init zaznacz każdą z pozostałych kart (w tym cuda, hpc i htc) i wprowadź ten sam skrypt. Wybierz pozycję Zapisz.

Zadanie 3. Weryfikowanie funkcji cloud-init w węźle harmonogramu

Aby sprawdzić funkcjonalność pakietu cloud-init w węźle harmonogramu, uruchomisz klaster. Spowoduje to uruchomienie konfigurowania węzła planisty. Po uruchomieniu węzła będzie można nawiązać z nim połączenie z poziomu usługi Azure Cloud Shell i sprawdzić, czy plik /etc/hosts zawiera wpis 10.10.10.10.10 www.contoso.com.

  1. W oknie przeglądarki, w którym wyświetlana jest aplikacja internetowa Azure CycleCloud, na stronie contoso-custom-slurm-lab-cluster wybierz link Start. Po wyświetleniu monitu o potwierdzenie wybierz przycisk OK.

    Notatka

    Jeśli klaster jest już uruchomiony, musisz zakończyć działanie i uruchomić go ponownie, aby zastosować zaktualizowaną konfigurację. W przeciwnym razie ta konfiguracja nie będzie widoczna w kolejnych krokach.

  2. Na liście węzłów wybierz wpis Scheduler i monitoruj jego stan w okienku Szczegóły , czekając, aż zmieni się z Uzyskiwanie na Gotowe.

    Notatka

    Może to potrwać około trzech minut.

  3. W okienku Szczegóły wybierz pozycję Połącz. W oknie wyskakującym Łączenie z węzłem: harmonogram w sekcji Korzystanie z CLI CycleCloud wybierz wpis zawierający polecenie pozwalające połączyć się z węzłem harmonogramu i wybierz pozycję Zamknij:

    Zrzut ekranu przedstawiający okno wyskakujące Harmonogram: Łączenie z węzłem w aplikacji internetowej Azure CycleCloud.

    Notatka

    Polecenie powinno mieć format cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster

  4. Przejdź do okna przeglądarki internetowej z okienkiem usługi Cloud Shell i uruchom polecenie skopiowane w poprzednim kroku.

    Notatka

    Polecenie powinno wygenerować dane wyjściowe w następującym formacie:

    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. Po nawiązaniu połączenia z węzłem harmonogramu uruchom następujące polecenie, aby sprawdzić, czy plik /etc/hosts zawiera wpis 10.10.10.10.10 www.contoso.com:

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

    Notatka

    Polecenie powinno wygenerować dane wyjściowe w następującym formacie:

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

Zadanie 4. Weryfikowanie funkcji pakietu cloud-init w węzłach obliczeniowych

Teraz powtórzysz równoważną sekwencję kroków, aby zweryfikować funkcjonalność pakietu cloud-init w węzłach obliczeniowych.

Ważny

Aby można było zastosować równoważną procedurę w celu zweryfikowania funkcji pakietu cloud-init w węzłach obliczeniowych, należy usunąć i przydzielić ponownie odpowiedni zestaw skalowania maszyn wirtualnych. Ten krok jest specyficzny dla klastrów opartych na slurm, ponieważ w tym przypadku integracja automatycznego skalowania harmonogramu wymaga, aby usługa Azure CycleCloud wstępnie wypełniała węzły obliczeniowe. W związku z tym konfiguracja pakietu cloud-init zastosowana wcześniej w tym ćwiczeniu nie wpłynie na istniejące węzły.

  1. Po nawiązaniu połączenia z węzłem harmonogramu uruchom następujące polecenia w usłudze Cloud Shell, aby usunąć i ponownie przydzielić węzły obliczeniowe w klastrze usługi Azure CycleCloud i zakończyć połączenie z węzłem harmonogramu:

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

    Notatka

    Po zakończeniu tego kroku zostanie wyświetlony komunikat Próba usunięcia poniższych węzłów, a po zakończeniu zobaczysz przeskalowanie klastra zakończone.

  2. Na swoim komputerze przełącz się na okno przeglądarki internetowej, w którym jest wyświetlona strona contoso-custom-slurm-lab-cluster aplikacji internetowej Azure CycleCloud. Na karcie Węzły, wybierz wiersz htc, a następnie w okienku Szczegóły wybierz wpis htc-1, po czym wybierz nagłówek karty Akcje. W menu rozwijanym wybierz pozycję Start, a następnie wybierz przycisk OK po wyświetleniu monitu o potwierdzenie.

    Zrzut ekranu przedstawiający menu Akcje na stronie contoso-custom-slurm-lab-cluster w aplikacji internetowej Azure CycleCloud.

  3. W okienku Szczegóły monitoruj nowo uruchomiony węzeł i poczekaj, aż jego stan zmieni się z Uzyskiwanie na Gotowe.

    Notatka

    Może to potrwać około trzech minut.

  4. W okienku Szczegóły wybierz pozycję Połącz. W oknie podręcznym Połącz z węzłem: htc-1 wybierz wpis w sekcji Użycie CycleCloud CLI, który zawiera polecenie pozwalające na połączenie z węzłem harmonogramu i wybierz opcję Zamknij:

    Zrzut ekranu przedstawiający wyskakujące okienko

    Notatka

    Polecenie powinno mieć format cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.

  5. Przejdź do okienka usługi Cloud Shell i uruchom polecenie skopiowane w poprzednim kroku.

    Notatka

    Polecenie powinno wygenerować dane wyjściowe w następującym formacie:

    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. Po nawiązaniu połączenia z węzłem htc-1 uruchom następujące polecenie, aby sprawdzić, czy plik /etc/hosts zawiera wpis 10.10.10.10.10 www.contoso.com:

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

    Notatka

    Po osiągnięciu tego punktu należy usunąć wszystkie zasoby wdrożone w tym i poprzednich ćwiczeniach tego modułu. Dzięki temu można uniknąć opłat związanych z utrzymywaniem tych zasobów w ramach subskrypcji platformy Azure.

Zadanie 5. Czyszczenie środowiska laboratoryjnego

Testowanie dostosowywania klastra przy użyciu aplikacji Azure CycleCloud zostało ukończone. Aby uniknąć niepotrzebnych kosztów związanych z korzystaniem z zasobów platformy Azure, teraz zakończysz działanie klastra i usuniesz wszystkie zasoby aprowiowane w ramach ćwiczeń tego modułu.

  1. W przeglądarce internetowej wyświetlającej graficzny interfejs aplikacji internetowej Azure CycleCloud wybierz link Zakończ na stronie contoso-custom-slurm-lab-cluster , a po wyświetleniu monitu o potwierdzenie wybierz przycisk OK.

  2. Monitoruj proces zakończenia.

    Notatka

    Proces obejmuje anulowanie aprowizacji maszyny wirtualnej platformy Azure obsługującej rolę węzła głównego klastra. Może to potrwać około pięciu minut.

    Notatka

    Aby usunąć wszystkie inne zasoby, które udostępniłeś w tym laboratorium, musisz usunąć grupy zasobów gospodarujące zasobami klastra.

  3. W Azure Portal przejdź do panelu grupy zasobów hostującej zasoby klastra i wybierz wpis Usuń grupę zasobów na pasku narzędzi. W polu tekstowym Wprowadź nazwę grupy zasobów w celu potwierdzenia usunięcia wprowadź nazwę grupy zasobów i wybierz pozycję Usuń. Wybierz ponownie pozycję Usuń , aby potwierdzić usunięcie.

    Notatka

    Mogą istnieć dodatkowe grupy zasobów skojarzone z zasobami programu Slurm. Aby uniknąć dodatkowych opłat, usuń wszystkie te grupy zasobów związane z usługą Slurm i ich zasoby.

Gratulacje! Pomyślnie ukończono trzecie i ostatnie ćwiczenie tego modułu. W tym ćwiczeniu przeanalizowano użycie cloud-init w klastrach Azure CycleCloud i przetestowano je za pomocą prostego skryptu Bash, który zmodyfikował zawartość lokalnego pliku na każdym węźle. Wynik został zweryfikowany przez nawiązanie połączenia z węzłami klastra i przejrzenie zawartości zmodyfikowanych plików. Następnie klaster został zakończony i usunięto wszystkie zasoby klastra używane w tym module, aby uniknąć niepotrzebnych kosztów.