Ćwiczenie — tworzenie skryptu cloud-init do użycia z usługą Azure CycleCloud
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.
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.
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.
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ż.
W oknie dialogowym Otwieranie przejdź do lokalizacji pliku pem zawierającego klucz prywatny i wybierz pozycję Otwórz.
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 .
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ć.
Jeśli zostanie wyświetlony monit o uwierzytelnienie, zaloguj się, podając poświadczenia konta użytkownika aplikacji Azure CycleCloud z rolą Administrator.
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.
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
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.
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.
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.
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:
Notatka
Polecenie powinno mieć format
cyclecloud connect scheduler -c contoso-custom-slurm-lab-clusterPrzejdź 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 ~]$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/hostsNotatka
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.
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 exitNotatka
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.
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.
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.
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:
Notatka
Polecenie powinno mieć format
cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.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 ~]$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.
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.
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.
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.