PowerFlex: Kör skript på värd (även kallat OS Patching) Förklaring av funktionen
Summary: Funktionen används för att köra skript som tillhandahålls av användaren på servrar som är värdar för MDM- eller SDS-komponenter. Funktionen kan användas för alla syften utanför PowerFlex-systemet, till exempel för att köra en uppsättning Linux-skalkommandon, korrigera ett operativsystem med mera. ...
Instructions
Användargränssnitt – före PFMP (PowerFlex 4.x)
Förutsättningar
Obligatoriskt – huvudskriptet finns i /opt/emc/scaleio/lia/bin/ katalog med körningsbehörigheter.
- Skriptnamnet måste vara patch_script
Valfritt – valideringsskriptet finns i /opt/emc/scaleio/lia/bin/ katalog med körningsbehörigheter.
- Skriptnamnet måste vara verification_script
> Funktionen stöds endast på Linux (RHEL och SLES).
> Funktionen kontrollerar om slutkoden är 0 (noll) i slutet av körningen.
> Avslutningskoder och skriptkörning finns i LIA-loggarna.
> Det är kundens ansvar att testa patch_script och verification_script innan processen körs med hjälp av Gateway.
> Plats för funktionen: Upprätthålla → systemloggar och analyser → köra skript på värdar.
Steg och flöden
Köra skript på:
1. Hela systemet – alla PowerFlex-noder
Som standard körs skriptet på den första värdens skyddsdomän (PD) och flyttas sedan till den andra och så vidare.
Parallellt på olika skyddsdomäner inaktiverade – som standard är kryssrutan avmarkerad.
Parallellt på olika skyddsdomäner aktiverade – om du väljer det här alternativet körs patch_script parallellt på alla PD:er.
PD:er som inte har MDM:er är först och klusternoder är sist.
2. Protection Domain – en specifik PD
PD som inte har MDM är först och MDM-klusternoder är sist.
3. Feluppsättning – en specifik FS.
FS:er som inte har MDM:er är först och MDM-klusternoder är sista.
4. SDS – en enda SDS-nod
som kör konfiguration:
1. Stoppa processen vid skriptfel.
1.1 Stoppa process vid skriptfel aktiverat – som standard är kryssrutan markerad.
Hela körningen misslyckas och stoppas när patch_script (och verification_script om det väljs) avslutas med någon annan kod än 0 (noll).
1.2 Stoppprocess vid skriptfel inaktiverat.
Om patch_script misslyckas misslyckas körningen av den noden och systemet går vidare till nästa nod och kör patch_script på den noden.
2. Tidsgräns för skript – Hur lång tid ska det ta att vänta på att patch_script ska slutföras?
När skriptet körs har du en konfigurerbar tidsgräns som användaren väljer.
Som standard är tidsgränsen hårdkodad till 15 minuter → på grund av en bugg i versioner som är äldre än PowerFlex 3.6.
Hela körningen misslyckas och stoppas när tidsgränsen för skriptkörningen har överskridits.
3. Verifieringsskript – Vill du köra verification_script efter att patch_script har körts?
3.1 Kör - patch_script kommer att köras och när det är klart kommer verification_script att köras, beroende på om patch_script efteråtgärd var att starta om eller inte (avsnitt #4).
3.2 Kör inte - patch_script kommer att köras och när det är klart kommer hela körningen att stoppas och avslutas lika framgångsrikt.
4. Åtgärd efter skript – Vill du starta om noden när patch_script har körts?
4.1 Starta om - när patch_script har körts klart och avslutats med kod 0 (noll) kommer noden att starta om och stoppa eller fortsätta beroende på om verification_script valdes att köras eller inte (avsnitt #3).
Om gatewayen finns på en nod som ska startas om kommer den inte att startas om, åtgärden lyckas och ett popup-fönster som påminner oss om att starta om den manuellt visas.
4.2 Starta inte om – när patch_script har körts klart och avslutats med kod 0 (noll) kommer noden inte att starta om och stoppas eller fortsätta beroende på om verification_script valdes att köras eller inte (avsnitt #3).
Kör skript på värdar:
Tryck på "Run Script on Hosts" –>Validera att fasen startar.
Den här fasen skickar en begäran till var och en av nodens LIA för att verifiera förekomsten av patch_script och verification_script (om du väljer) filer under /opt/emc/scaleio/lia/bin/. – Herr talman,
Kodlogiken väljer en slumpmässig lista över noder som ska köras på (enligt de nämnda villkoren).
Starta körningsfasen:
Tryck på knappen "Starta körningsfas".
1. Gatewayen gör följande verifieringar:
a. Kontrollera att det inte finns någon trasig kapacitet.
b. Kontrollera giltig reservkapacitet.
c. Kontrollera giltigt klustertillstånd.
d. Kontrollera att inget annat SDS är i underhållsläge.
2. Gå in i SDS i underhållsläge.
3. Kör patch_script – efter en lyckad körning tas filen bort och en säkerhetskopia av den skapas i samma katalog.
Med namnet backup_patch_script
4. Starta om värden (om den valts)
5. Kör verification_script (om du har valt) – efter en lyckad körning tas filen bort och en säkerhetskopia av den skapas i samma katalog med namnet backup_verification_script.
6. Avsluta SDS från underhållsläge.
7. Åtgärden har slutförts.
RESTAPI – Efter PFMP (PowerFlex 4.x)
- Kör ett korrigeringsskript på alla eller några av systemnoderna, med en valfri omstart och ett valfritt verifieringsskript. Åtgärden har en viss nivå av parallellitet.
- Skriptfilerna ska lagras i nodens mapp: /opt/emc/scaleio/lia/bin Alternativt kan de laddas upp av GW till noden. Skripten kan antingen hämtas från en lokal GW-mapp eller laddas ned från HTTP/HTTPS-resursen.
- En lista över SdsIds och/eller mdmIds kan tillhandahållas för att uttryckligen välja de noder som ska köras på.
- Filnamnen är hårdkodade och kan inte ändras: patch_script och verification_script
REST-kommando
- /im/types/Configuration/actions/liaRunOsPatching
Obligatoriska parametrar
- Någon av följande parametrar är obligatorisk: pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- körs på alla noder som ingår i följande skyddsdomäner (PD-ID), i decimalformatfsIds- körs på alla noder som ingår i följande feluppsättningar (FS-ID), i decimalformatsdsIds- körs på alla SDS:er som listas av Ids, i decimalformatmdmIds- körs på alla MDM-enheter som anges av ID:n, i decimalformatexecuteOnAllSdss- körs på alla SDS:er (sant/falskt)executeOnAllMdms- körs på alla MDM-enheter (sant/falskt)
Valfria parametrar
isRebootRequired- Ska varje nod starta om efter att ha kört korrigeringsskriptet (värden: true/false)isVerificationScriptRequired- Om verifieringsskriptet körs på varje nod (värden: sant/falskt)isRunningInParallelOnPds- om operationen körs på ett parallellt sätt på noder som tillhör olika PD (värden: sant/falskt)isStopProcessingOnScriptFailure- Om hela åtgärden stoppas i händelse av ett skriptfel (värden: true/false)TimeoutMs- timeout för att köra patchskriptet i millisekunderisUploadFileNeeded- Ska GW ladda upp skript till noderna (värden: true/false)
Följande fält är relevanta när isUploadFileNeeded är "sant":
patchScriptFilePath- antingen det lokala mappnamnet eller en http/https-URL för patchskriptetverificationScriptFilePath- antingen det lokala mappnamnet eller en http/https-URL för verifieringsskriptetmaintenanceModeType- Typ av underhållsläge(värden: IMM/PMM)verificationScriptTimeoutSec- Tidsgräns för verifieringsskript i sekunderrebootTimeoutSec– Tidsgräns för omstart av nod i sekunder
Observera att innan du kör kommandot liaRunOsPatching bör du först logga in och hämta systemkonfigurationen, se exemplet nedan.
Kommandoexempel
*token variabeln innehåller den Keycloak token som returnerades från /auth/login eller från /api/gatewayLogin.
ip-address – IP-adressen för en http-server som innehåller skripten som ska köras
Hämta json för en systemkonfiguration, som kommer att vara nyttolasten för patchkommandot (måste ersätta liaPassword och mdmPassword manuellt från null till någon sträng).
<>Infoga utdata från det här kommandot (med fasta lösenord) 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 kommandot patch:
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
Loggar
Gateway:
- /opt/emc/scaleio/gateway/logs/scaleio.log
- /opt/emc/scaleio/gateway/logs/scaleio-trace.log
LIA:
/opt/emc/scaleio/lia/logs/trc.x
Dricks- Särskild växel för att behålla skriptet i noden vid felsökning eller testning:
- Redigera filen /opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.properties
- Leta reda på fältet "ospatching.delete.scripts=false"
- Ändra till sant för felsökning (standardvärdet är falskt)