PowerFlex: Opis funkcji uruchamiania skryptu na hoście (czyli poprawki systemu operacyjnego)
Summary: Funkcja ta służy do uruchamiania skryptów dostarczonych przez użytkownika na serwerach hostujących komponenty MDM lub SDS. Funkcja może być wykorzystana do dowolnego celu zewnętrznego w stosunku do systemu PowerFlex, takie jak uruchomienie zestawu poleceń wiersza poleceń systemu Linux, aktualizacja systemu operacyjnego, i wiele innych. ...
Instructions
Interfejs użytkownika — Pre-PFMP (PowerFlex 4.x)
Wymagania wstępne
Obowiązkowe — skrypt główny znajduje się w /opt/emc/scaleio/lia/bin/ katalogu z uprawnieniami do wykonywania.
- Skrypt musi mieć nazwę patch_script
Opcjonalnie — skrypt weryfikacyjny znajduje się w /opt/emc/scaleio/lia/bin/ katalogu z uprawnieniami do wykonywania.
- Skrypt musi mieć nazwę verification_script
> Ta funkcja jest obsługiwana tylko w systemie Linux (RHEL i SLES).
> Funkcja sprawdza, czy kod wyjścia to 0 (zero) na końcu wykonania.
> Kody wyjścia i uruchomienie skryptu można znaleźć w dziennikach LIA.
> Klient jest odpowiedzialny za przetestowanie skryptów patch_script i verification_script przed uruchomieniem procesu za pomocą bramki.
> Lokalizacja funkcji: Maintain → System Logs and Analysis → Run Script on Hosts.
Kroki i procesy
Uruchamianie skryptu:
1. Cały system — wszystkie węzły PowerFlex
Domyślnie skrypt jest uruchamiany w domenie ochrony pierwszego hosta (PD), a następnie przechodzi do drugiego itd.
Równolegle w przypadku wyłączenia różnych domen ochrony — pole wyboru jest domyślnie odznaczone.
Równolegle w przypadku włączenia różnych domen ochrony — po wybraniu tej opcji skrypt patch_script będzie uruchamiany równolegle na wszystkich domenach ochrony.
Domeny ochrony, które nie mają modułów MDM, są pierwsze, a węzły klastra ostatnie.
2. Protection Domain — określona domena ochrony
Domeny ochrony, które nie mają modułów MDM, są pierwsze, a węzły klastra MDM ostatnie.
3. Fault Set — określony zestaw błędów.
Zestawy błędów, które nie mają modułów MDM, są pierwsze, a węzły klastra MDM ostatnie.
4. SDS — pojedynczy węzeł SDS
Uruchamianie konfiguracji:
1. Stop process on script failure.
1.1 Opcja Stop process on script failure włączona — domyślnie pole wyboru jest zaznaczone.
Całe uruchomienie zakończy się niepowodzeniem i zostanie zatrzymane po zakończeniu skryptów patch_script (i verification_script, jeśli wybrano) z innym kodem niż 0 (zero).
1.2 Opcja Stop process on script failure wyłączona.
W przypadku niepowodzenia skryptu patch_script wykonanie tego węzła zakończy się niepowodzeniem, a system przejdzie do kolejnego węzła i uruchomi skrypt patch_script na tym węźle.
2. Script timeout — ile czasu należy czekać na zakończenie skryptu patch_script?
Uruchomienie skryptu ma konfigurowalny limit czasu, który jest wybierany przez użytkownika.
Domyślnie jest on skonfigurowany na 15 minut → z powodu błędu limit czasu jest zakodowany na 15 minut w wersjach starszych niż PowerFlex 3.6.
Całe uruchomienie zakończy się niepowodzeniem po przekroczeniu limitu czasu uruchomienia skryptu.
3. Verification script — czy chcesz uruchomić skrypt verification_script po uruchomieniu skryptu patch_script?
3.1 Run— patch_script zostanie uruchomiony, a po zakończeniu zostanie uruchomiony verification_script, w zależności od tego, czy po uruchomieniu skryptu patch_script system ma włączyć się ponownie czy nie (sekcja nr 4).
3.2 Do not Run — patch_script zostanie uruchomiony, a po zakończeniu całe uruchomienie zakończy się powodzeniem.
4. Post script action — czy chcesz uruchomić węzeł po uruchomieniu skryptu patch_script?
4.1 U Reboot— po zakończeniu uruchomienia skryptu patch_script z kodem 0 (zero), węzeł uruchomi się ponownie i zatrzyma lub kontynuuje działanie w zależności od tego, czy wybrano uruchomienie skryptu verification_script (sekcja #3).
Jeśli bramka znajduje się na węźle, który ma zostać uruchomiony ponownie, nie uruchomi się ponownie, operacja zakończy się sukcesem i zostanie wyświetlone wyskakujące okienko z monitem o ręczne przeprowadzenie ponownego uruchomienia.
4.2 Do not reboot — po zakończeniu działania skryptu patch_script z kodem 0 (zero), węzeł nie uruchomi się ponownie i zatrzyma się lub kontynuuje działanie w zależności od tego, czy wybrano uruchomienie skryptu verification_script (sekcja #3).
Run Script on Hosts
Naciśnij przycisk „Run Script on Hosts” —> rozpocznie się faza Validate.
Faza ta wyśle żądanie do każdego z LIA węzła w celu zweryfikowania obecności plików patch_script i verification_script (jeśli wybrano) w lokalizacji /opt/emc/scaleio/lia/bin/.
Logika kodu wybiera losową listę węzłów do uruchomienia (zgodnie z wymienionymi warunkami).
Start execution phase:
Naciśnij przycisk „Start execution phase”.
1. Brama wykonuje następujące weryfikacje:
a. Sprawdzenie, czy nie ma uszkodzonej pojemności.
b. Sprawdzenie prawidłowej pojemności zapasowej.
c. Sprawdzenie prawidłowego stanu klastra.
d. Sprawdzenie, czy żaden inny SDS nie jest w trybie konserwacji.
2. Wprowadź SDS w tryb konserwacji.
3. Uruchom skrypt patch_script — po pomyślnym uruchomieniu plik zostanie usunięty, a jego kopia zapasowa zostanie utworzona w tej samej lokalizacji
z nazwą backup_patch_script
4. Uruchom ponownie hosta (jeśli wybrano)
5. Uruchom skrypt verification_script (jeśli wybrano) — po pomyślnym uruchomieniu plik zostanie usunięty, a plik kopii zapasowej zostanie utworzony w tym samym katalogu z nazwą backup_verification_script.
6. Wyjdź z trybu konserwacji SDS.
7. Operacja została przeprowadzona pomyślnie.
RESTAPI — po PFMP (PowerFlex 4.x)
- Uruchom skrypt poprawki na wszystkich lub niektórych węzłach systemu z opcjonalnym ponownym uruchomieniem i opcjonalnym skryptem weryfikacyjnym. Operacja ma pewien poziom równoległości.
- Pliki skryptów powinny być przechowywane w folderze węzła: /opt/emc/scaleio/lia/bin Można też przesłać je przez bramę do węzła. Skrypty można pobrać z lokalnego folderu bramy lub pobrać z udostępnionego folderu HTTP/HTTPS.
- Można podać listę identyfikatorów SdsId i/lub mdmId, aby wyraźnie wybrać węzły do uruchomienia.
- Nazwy plików są zakodowane na stałe i nie można ich zmienić: patch_script i verification_script
Polecenie REST
- /im/types/Configuration/actions/liaRunOsPatching
Wymagane parametry
- Jeden z następujących parametrów jest wymagany: pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- uruchom na wszystkich węzłach, które są częścią następujących domen ochrony (identyfikatory PD w formacie dziesiętnym)fsIds- uruchom na wszystkich węzłach, które są częścią następujących zestawów błędów (identyfikatory FS w formacie dziesiętnym)sdsIds- uruchom na wszystkich SDS, podanych według identyfikatorów w formacie dziesiętnymmdmIds- uruchom na wszystkich modułach MDM, podanych według identyfikatorów w formacie dziesiętnymexecuteOnAllSdss- uruchom na wszystkich SDS (true/false)executeOnAllMdms- uruchom na wszystkich modułach MDM (true/false)
Parametry opcjonalne
isRebootRequired- czy każdy węzeł powinien ponownie uruchomić się po uruchomieniu skryptu poprawki (wartości: true/false)isVerificationScriptRequired- czy skrypt weryfikacyjny należy uruchomić na każdym węźle na każdym węźle (wartości: true/false)isRunningInParallelOnPds- czy operacja powinna być wykonywana równolegle na węzłach, które należą do różnych PD (wartości: true/false)isStopProcessingOnScriptFailure- czy cała operacja powinna zostać zatrzymana w przypadku awarii skryptu (wartości: true/false)TimeoutMs- limit czasu dla uruchomienia skryptu poprawki w milisekundachisUploadFileNeeded- czy brama powinna przesłać skrypty do węzłów (wartości: true/false)
Poniższe pola są istotne, gdy isUploadFileNeeded mają wartość true:
patchScriptFilePath- nazwa folderu lokalnego lub adres URL http/https skryptu poprawkiverificationScriptFilePath- nazwa folderu lokalnego lub adres URL http/https skryptu weryfikacyjnegomaintenanceModeType- typ trybu konserwacji (wartości: IMM/PMM)verificationScriptTimeoutSec- limit czasu skryptu weryfikacyjnego w sekundachrebootTimeoutSec- limit czasu ponownego uruchomienia węzła w sekundach
Należy pamiętać, że przed uruchomieniem polecenia liaRunOsPatching należy najpierw zalogować się i uzyskać konfigurację systemu, patrz poniższy przykład.
Przykład polecenia
* Zmienna tokenu zawiera token Keycloak zwrócony z logowania /auth/ lub z /api/gatewayLogin.
** <adres_IP> — adres IP serwera http zawierającego skrypt, który ma zostać uruchomiony
Pobierz plik json konfiguracji systemu, który będzie stanowić ładunek polecenia poprawki (należy ręcznie zmienić wartości liaPassword mdmPassword z null na jakiś ciąg).
Wprowadź wynik tego polecenia (z ustalonymi hasłami) do pliku config.json:
curl -s -X POST -k -H "Content-Type: application/json" -d '{ "mdmIps":["1.2.3.4","5.6,7,8"], "mdmUser":"<mdm_username>", "mdmPassword":"<mdm_password>", "securityConfiguration":{ "allowNonSecureCommunicationWithMdm":"true", "allowNonSecureCommunicationWithLia":"true", "disableNonMgmtComponentsAuth":"false" } }' -H "Authorization: Bearer ${token}" https://<m&o-ip-address>/im/types/Configuration/instances
Uruchom polecenie poprawki:
curl -v -k -X -i POST -H "Content-Type:application/json" -H "Authorization: Bearer ${token}"
"https:/<m&o-ip-address>/im/types/Configuration/actions/liaRunOsPatching?executeOnAllSdss=true &isRebootRequired=true&isVerificationScriptRequired=true&patchScriptFilePath=https://<ip-address>/patch_script&verificationScriptFilePath=https://<ip-address>/verification_script&maintenanceModeType=IMM&rebootTimeoutSec=30" -d @config.json
Additional Information
Dzienniki
Bramka:
- /opt/emc/scaleio/gateway/logs/scaleio.log
- /opt/emc/scaleio/gateway/logs/scaleio-trace.log
LIA:
/opt/emc/scaleio/lia/logs/trc.x
Wskazówka — specjalny przełącznik, który zachowuje skrypt w węźle podczas rozwiązywania problemów lub testowania:
- Edytuj plik /opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.properties
- Znajdź pole „ospatching.delete.scripts=false”
- Zmień na true w celu rozwiązywania problemów (ustawienie domyślne to false)