PowerFlex: Kør script på værtsfunktion (aka OS Patching) forklaret
Summary: Funktionen bruges til at køre brugerleverede scripts på servere, der er vært for MDM- eller SDS-komponenter. Funktionen kan bruges til ethvert formål uden for PowerFlex-systemet, såsom at køre et sæt Linux shell-kommandoer, lappe et operativsystem og mere. ...
Instructions
UI – Pre-PFMP (PowerFlex 4.x)
Forudsætninger
Obligatorisk - hovedscriptet er placeret i /opt/emc/scaleio/lia/bin/ mappe med udførelsestilladelser.
- Scriptnavnet skal være patch_script
Valgfrit – valideringsscriptet findes i /opt/emc/scaleio/lia/bin/ mappe med udførelsestilladelser.
- Scriptnavnet skal være verification_script
> Funktionen understøttes kun på Linux (RHEL og SLES).
> Funktionen kontrollerer, om afslutningskoden er 0 (nul) i slutningen af udførelsen.
> Afslutningskoder og scriptkørsel kan findes i LIA-logfilerne.
> Det er kundens ansvar at teste patch_script og verification_script, før processen køres ved hjælp af Gateway.
> Funktionsplacering: Vedligeholde → systemlogfiler og analyse → køre script på værter.
Trin og flows
Kører script på:
1. Hele systemet – alle PowerFlex-noder
Som standard kører scriptet på den første værts beskyttelsesdomæne (PD) og flyttes derefter til det andet osv.
Parallelt på forskellige beskyttelsesdomæner deaktiveret - som standard er afkrydsningsfeltet ryddet.
Parallelt på forskellige aktiverede beskyttelsesdomæner – ved at vælge denne indstilling kører patch_script parallelt på alle PD'er.
PD er, der ikke har MDM, er de første, og klyngenoder er de sidste.
2. Beskyttelsesdomæne – en specifik PD
PD er, der ikke har MDM er, er den første, og MDM-klyngenoderne er den sidste.
3. Fejlsæt - en bestemt FS.
FS er, der ikke har MDM'er, er først, og MDM-klyngenoder er sidste.
4. SDS – en enkelt SDS-node
Kører konfiguration:
1. Stop processen ved scriptfejl.
1.1 Stop processen ved scriptfejl aktiveret - som standard er afkrydsningsfeltet markeret.
Hele kørslen mislykkes og stopper, når patch_script (og verification_script, hvis valgt) afsluttes med en anden kode end 0 (nul).
1.2 Stop processen ved scriptfejl deaktiveret.
Hvis patch_script mislykkes, mislykkes udførelsen af den node, og systemet flytter til den næste node og kører patch_script på den node.
2. Timeout for script – Hvor lang tid skal der ventes på, at patch_script afsluttes?
Kørsel af scriptet har en konfigurerbar timeout, som vælges af brugeren.
Som standard konfigureret til 15 minutter → på grund af en fejl er timeout hårdt kodet til 15 minutter i versioner, der er ældre end PowerFlex 3.6.
Hele kørslen mislykkes og stopper, når scriptkørslen er timeout.
3. Bekræftelsesscript – Vil du køre verification_script, når patch_script er kørt?
3.1 Kør - patch_script kører, og når det er gjort, køres verification_script, afhængigt af om den patch_script post-handling skulle genstarte eller ej (sektion #4).
3.2 Kør ikke - patch_script kører, og når det er gjort, stopper hele kørslen og afsluttes med succes.
4. Handling efter script – Vil du genstarte noden, når patch_script er kørt?
4.1 Genstart - når patch_script er færdig med at køre og afsluttet med kode 0 (nul), genstarter noden og stopper eller fortsætter, afhængigt af om verification_script blev valgt til at køre eller ej (sektion #3).
Hvis Gateway er på en node, der skal genstartes, genstarter den ikke, handlingen lykkes, og der vises en pop-up, der minder os om at genstarte den manuelt.
4.2 Genstart ikke - når patch_script er færdig med at køre og afsluttet med kode 0 (nul), genstarter noden ikke og stopper eller fortsætter, afhængigt af om verification_script blev valgt til at køre eller ej (sektion #3).
Kør script på værter:
Tryk på "Run Script on Hosts" -->Valider fasestart .
Denne fase sender en anmodning til hver af nodens LIA for at bekræfte eksistensen af patch_script- og verification_script-filerne (hvis valgt) under /opt/emc/scaleio/lia/bin/.
Kodelogikken vælger en tilfældig liste over noder, der skal køres på (i henhold til de nævnte betingelser).
Start udførelsesfasen:
Tryk på knappen "Start udførelsesfase".
1. Gateway foretager følgende verificeringer:
en. Kontrollér, at der ikke er nogen fejlbehæftet kapacitet.
b. Tjek den gyldige ekstra kapacitet.
c. Kontroller den gyldige klyngetilstand.
d. Kontroller, at intet andet sikkerhedsdatablad er i vedligeholdelsestilstand.
2. Sæt sikkerhedsdatabladet i vedligeholdelsestilstand.
3. Kør patch_script - efter en vellykket kørsel slettes filen, og der oprettes en sikkerhedskopifil af den på samme mappe.
Med navnet backup_patch_script
4. Genstart værten (hvis valgt)
5. Kør verification_script (hvis valgt) - efter en vellykket kørsel slettes filen, og der oprettes en sikkerhedskopifil af den på samme mappe med navnet backup_verification_script.
6. Afslut sikkerhedsdatabladet fra vedligeholdelsestilstand.
7. Handlingen blev gennemført.
RESTAPI – Post-PFMP (PowerFlex 4.x)
- Kør et patchscript på alle eller nogle af systemnoderne med en valgfri genstart og et valgfrit verifikationsscript. Operationen har en vis grad af parallelisme.
- Scriptfilerne skal gemmes i nodens mappe: /opt/emc/scaleio/lia/bin Alternativt kan GW uploade dem til noden. Scriptene kan enten tages fra en lokal GW-mappe eller downloades fra HTTP/HTTPS-deling.
- Der kan leveres en liste over SdsId'er og/eller mdmId'er, så du eksplicit kan vælge de noder, der skal køres på.
- Filnavnene er hårdt kodede og kan ikke ændres: patch_script og verification_script
REST-kommando
- /im/types/Konfiguration/handlinger/liaRunOsPatching
Påkrævede parametre
- En af følgende parametre er obligatorisk: pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- køre på alle noder, der er en del af følgende beskyttelsesdomæner (PD-id'er), i decimalformatfsIds- køre på alle noder, der er en del af følgende fejlsæt (FS Id'er), i decimalformatsdsIds- køre på alle SDS'er, der er anført af id'er, i decimalformatmdmIds- køre på alle MDM'er, der er angivet efter id'er, i decimalformatexecuteOnAllSdss- Kør på alle SDS'er (sandt / falsk)executeOnAllMdms- kør på alle MDM'er (sandt / falsk)
Valgfrie parametre
isRebootRequired- Skal hver node genstartes efter at have kørt patchscriptet (værdier: true/false)isVerificationScriptRequired- Skal verifikationsscriptet køre på hver node (værdier: sand/falsk)isRunningInParallelOnPds- skal operationen køre parallelt på noder, der tilhører forskellige PD'er (værdier: sand/falsk)isStopProcessingOnScriptFailure- skal hele operationen stoppe i tilfælde af en scriptfejl (værdier: sand/falsk)TimeoutMs- timeout for at køre patch-scriptet i millisekunderisUploadFileNeeded- Skal GW uploade scripts til noderne (værdier: sand/falsk)
Følgende felter er relevante, når isUploadFileNeeded er 'sand':
patchScriptFilePath- enten det lokale mappenavn eller en http/https-URL til patchscriptetverificationScriptFilePath- enten det lokale mappenavn eller en http/https-URL til verifikationsscriptetmaintenanceModeType- Type af vedligeholdelsestilstand(værdier: IMM/PMM)verificationScriptTimeoutSec- timeout for verifikationsscript på få sekunderrebootTimeoutSec- Timeout for genstart af node på få sekunder
Bemærk, at før du kører liaRunOsPatching-kommandoen, skal du først logge ind og hente systemkonfigurationen, se eksemplet nedenfor.
Eksempel på kommando
*tokenvariablen indeholder Keycloak-tokenet, der blev returneret fra /auth/login eller fra /api/gatewayLogin.
**<ip-address> – IP-adressen på en http-server, der indeholder de scripts, der skal køres
Få json for en systemkonfiguration, som vil være nyttelasten for patch-kommandoen (skal erstatte liaPassword og mdmPassword manuelt fra null til en streng).
Indsæt outputtet af denne kommando (med faste adgangskoder) i config.json filen:
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
Kør patch-kommandoen:
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
Logfiler
Gateway:
- /opt/emc/scaleio/gateway/logfiler/scaleio.log
- /opt/emc/scaleio/gateway/logfiler/scaleio-trace.log
LIA:
/opt/emc/scaleio/lia/logs/trc.x
Drikkepenge- Speciel switch til at holde scriptet i noden under fejlfinding eller test:
- Rediger fil /opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.properties
- Find feltet "ospatching.delete.scripts=false"
- Skift til sand til fejlfinding (standard er falsk)