Ć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 portalu Azurei po wyświetleniu monitu uwierzytelnij się przy użyciu konta Microsoft lub konta Azure Active Directory z rolą Współautor lub Właściciel w subskrypcji Azure, której używasz w tym module.
Na Azure Portal otwórz Cloud Shell, wybierając jego 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 na przeciwległe kierunki. Następnie w menu rozwijanym wybierz pozycję Przekaż.
W oknie dialogowym Otwórz przejdź do lokalizacji pliku .pem zawierającego klucz prywatny, a następnie wybierz Otwórz.
Uruchom następujące polecenia w usłudze Cloud Shell, aby przenieść przekazany plik pem do prawidłowej lokalizacji i skonfigurować niezbędne uprawnienia na poziomie pliku (zastąp symbol zastępczy
<private_key.pem>
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 jeszcze nie masz połączenia z aplikacją internetową Azure CycleCloud, otwórz inne 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 opcję Edytuj.
W oknie podręcznym Edytowanie contoso-custom-slurm-lab-cluster wybierz wpis Cloud-init, a następnie na karcie harmonogramu w sekcji konfiguracji 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, hpci htc) i wprowadź ten sam skrypt. Wybierz pozycję Zapisz.
Zadanie 3: Zweryfikuj działanie cloud-init na węźle zarządzającym harmonogramem
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 /etc/hosts plik zawiera wpis 10.10.10.10.10 www.contoso.com.
W oknie przeglądarki z wyświetlaną aplikacją internetową Azure CycleCloud wybierz link Start na stronie contoso-custom-slurm-lab-cluster. Po wyświetleniu monitu o potwierdzenie wybierz pozycję 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 oknie szczegóły wybierz Connect. W okienku Połącz z węzłem: harmonogram, w sekcji Korzystanie z interfejsu wiersza polecenia usługi CycleCloud, wybierz wpis zawierający polecenie połączenia z węzłem harmonogramu i wybierz Zamknij:
Notatka
Polecenie powinno mieć format
cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster
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 ~]$
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.
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
Zostaną wyświetlone komunikaty informujące, że podjęto próbę usunięcia następujących węzłów, a następnie zakończono ponowne skalowanie klastra po zakończeniu tego kroku.
Na komputerze przejdź do okna przeglądarki internetowej z wyświetlonym contoso-custom-slurm-lab-cluster strony aplikacji internetowej Azure CycleCloud. Na karcie Węzły wybierz wiersz htc, a następnie w okienku Szczegóły wybierz wpis htc-1, a następnie wybierz nagłówek karty Akcje. W menu rozwijanym wybierz pozycję Starti wybierz pozycję 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 do Gotowe.
Notatka
Może to potrwać około trzech minut.
W okienku szczegóły wybierz pozycję Connect. W oknie podręcznym Połącz z węzłem: htc-1 wybierz wpis w sekcji Using the CycleCloud CLI (Korzystanie z interfejsu wiersza polecenia CycleCloud) zawierającego polecenie umożliwiające nawiązanie połączenia z węzłem harmonogramu, a następnie wybierz pozycję 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.
Nota
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"
Uwaga
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 interfejs graficzny aplikacji internetowej Azure CycleCloud wybierz link Zakończ na stronie contoso-custom-slurm-lab-cluster, a kiedy pojawi się monit o potwierdzenie, wybierz 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 portalu Azure przejdź do panelu grupy zasobów hostującej zasoby klastra, wybierz wpis Usuń grupę zasobów na pasku narzędzi. W polu tekstowym Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów i wybierz Usuń. Wybierz ponownie 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.