PowerFlex : description de la fonctionnalité d’exécution d’un script sur l’hôte (ou application de correctifs au système d’exploitation)
Summary: Cette fonctionnalité peut être utilisée pour exécuter des scripts fournis par l’utilisateur sur des serveurs hébergeant des composants MDM ou SDS. Cette fonctionnalité peut être utilisée à n’importe quelle fin externe au système PowerFlex, comme l’exécution d’un ensemble de commandes shell Linux, l’application de correctifs à un système d’exploitation, etc. ...
Instructions
UI - Pré-PFMP (PowerFlex 4.x)
Configuration requise
Obligatoire : le script principal se trouve dans le répertoire /opt/emc/scaleio/lia/bin/ avec autorisations d’exécution.
- Le nom du script doit être patch_script
Facultatif : le script de validation se trouve dans le répertoire /opt/emc/scaleio/lia/bin/ avec autorisations d’exécution.
- Le nom du script doit être verification_script
> La fonctionnalité est prise en charge sur Linux uniquement (RHEL et SLES).
> La fonctionnalité vérifie si le code de sortie est 0 (zéro) à la fin de l’exécution.
> Les codes de sortie et l’exécution de scripts sont disponibles dans les journaux LIA.
> Il incombe au client de tester les scripts patch_script et verification_script avant d’exécuter le processus à l’aide de la passerelle.
> Emplacement de la fonctionnalité : Tenir à jour → Journaux système et analyse → Exécuter un script sur les hôtes.
Étapes et flux
Exécution du script sur :
1. Tout le système : tous les nœuds PowerFlex
Par défaut, le script s’exécute sur le domaine de protection (PD) du premier hôte, puis passe au second, et ainsi de suite.
En parallèle sur différents domaines de protection désactivés : par défaut, la case est décochée.
En parallèle sur différents domaines de protection activés : en sélectionnant cette option, patch_script s’exécute en parallèle sur tous les PD.
Les PD sans MDM s’exécutent en premier et les nœuds de cluster en dernier.
2. Domaine de protection : un PD spécifique
Les PD sans MDM sont les premiers et les nœuds de cluster MDM sont les derniers.
3. Ensemble de pannes : un ensemble de pannes spécifique.
Les ensembles de pannes sans MDM sont les premiers et les nœuds de cluster MDM sont les derniers.
4. SDS : un nœud SDS unique
Configuration d’exécution :
1. Arrêter le processus en cas d’échec du script.
1.1 Option Arrêter le processus en cas d’échec du script activée : par défaut, la case est cochée.
Tout le processus échoue et s’arrête dès que patch_script (et verification_script s’il est sélectionné) se termine avec un code différent de 0 (zéro).
1.2 Option Arrêter le processus en cas d’échec du script désactivée.
En cas d’échec du script patch_script, l’exécution de ce nœud échoue et le système passe au nœud suivant et exécute le script patch_script sur ce nœud.
2. Délai d’expiration du script : combien de temps faut-il attendre la fin de patch_script ?
Le processus d’exécution du script dispose d’un délai d’expiration configurable, choisi par l’utilisateur.
Configuré par défaut sur 15 minutes → en raison d’un bug, le délai d’expiration est codé en dur sur 15 minutes, dans les versions antérieures à PowerFlex 3.6.
Tout le processus échoue et s’arrête une fois le délai d’exécution du script expiré.
3. Script de vérification : voulez-vous exécuter verification_script après l’exécution de patch_script ?
3.1 Exécuter :patch_script s’exécutera et une fois terminé, verification_script s’exécutera, si l’action suivante de patch_script était de redémarrer ou non (section n° 4).
3.2 Ne pas exécuter : patch_script s’exécute et une fois terminé, l’exécution s’arrête et se termine avec succès.
4. Action post script : voulez-vous redémarrer le nœud après l’exécution de patch_script ?
4.1 Redémarrer : une fois que patch_script s’est exécuté en générant un code de fin 0 (zéro), le nœud redémarre et s’arrête ou continue selon que l’exécution de verification_script a été sélectionnée ou non (section n° 3).
Si la passerelle se trouve sur un nœud à redémarrer, elle ne redémarre pas, l’opération réussit et une fenêtre contextuelle vous rappelle de redémarrer manuellement.
4.2 Ne pas redémarrer : lorsque patch_script s’est exécuté en générant un code de fin 0 (zéro), le nœud ne redémarre pas et s’arrête ou continue selon que l’exécution de verification_script a été sélectionnée ou non (section n° 3).
Exécuter le script sur les hôtes :
Sélectionnez « Exécuter le script sur les hôtes » --> la phase de validation démarre.
Cette phase envoie une demande à chacun des LIA du nœud pour vérifier l’existence des fichiers patch_script et verification_script (le cas échéant) sous /opt/emc/scaleio/lia/bin/.
La logique de code sélectionne une liste aléatoire de nœuds sur lesquels exécuter les scripts (en fonction des conditions mentionnées).
Démarrer la phase d’exécution :
Appuyez sur le bouton « Démarrer la phase d’exécution ».
1. La passerelle effectue les vérifications suivantes :
a. Vérifier qu’il n’y a pas de capacité défaillante.
b Vérifier la capacité de secours valide.
c. Vérifier l’état de validité du cluster.
d Vérifier qu’aucun autre SDS n’est en mode maintenance.
2. Passez le SDS en mode maintenance.
3. Exécutez le script patch_script : après une exécution réussie, le fichier est supprimé et un fichier de sauvegarde est créé dans le même répertoire.
Nom backup_patch_script
4. Redémarrez l’hôte (le cas échéant).
5. Exécutez le script verification_script (si cette option est sélectionnée) : après une exécution réussie, le fichier est supprimé et un fichier de sauvegarde est créé dans le même répertoire avec le nom backup_verification_script.
6. Sortez le SDS du mode maintenance.
7. L’opération a été effectuée avec succès.
RESTAPI - Post-PFMP (PowerFlex 4.x)
- Exécutez un script de correctif sur tous les nœuds système, ou sur certains d’entre eux, avec un redémarrage et un script de vérification facultatifs. L’opération présente un certain niveau de parallélisme.
- Les fichiers de script doivent être stockés dans le dossier du nœud : /opt/emc/scaleio/lia/bin Ils peuvent également être téléchargés par la passerelle sur le nœud. Vous pouvez extraire les scripts d’un dossier local de passerelle ou les télécharger à partir d’un partage HTTP ou HTTPS.
- Vous pouvez fournir une liste des sdsId et/ou des mdmId pour choisir explicitement les nœuds sur lesquels exécuter les scripts.
- Les noms de fichier patch_script et verification_script sont codés en dur et ne peuvent être modifiés.
Commande REST
- /im/types/Configuration/actions/liaRunOsPatching
Paramètres requis
- L’un des paramètres suivants est obligatoire : pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- exécuter sur tous les nœuds qui font partie des domaines de protection suivants (ID PD), au format décimalfsIds- exécuter sur tous les nœuds qui font partie des ensembles de pannes suivants (ID FS), au format décimalsdsIds- exécuter sur tous les SDS répertoriés par ID, au format décimalmdmIds- exécuter sur tous les MDM répertoriés par ID, au format décimalexecuteOnAllSdss- exécuter sur tous les SDS (true/false)executeOnAllMdms- exécuter sur tous les MDM (true/false)
Paramètres optionnels
isRebootRequired- indique si chaque redémarrage de nœud est requis après l’exécution du script de correctif (valeurs : true/false)isVerificationScriptRequired- indique si le script de vérification est exécuté sur chaque nœud (valeurs : true/false)isRunningInParallelOnPds- indique si l’opération est exécutée de manière parallèle sur des nœuds appartenant à différents PD (valeurs : true/false)isStopProcessingOnScriptFailure- indique si l’opération complète s’arrête en cas d’échec d’un script (valeurs : true/false)TimeoutMs- valeur du délai d’expiration pour l’exécution du script de correctif en millisecondesisUploadFileNeeded- indique si la passerelle doit charger des scripts sur les nœuds (valeurs : true/false)
Les champs suivants sont pertinents lorsque la valeur isUploadFileNeeded est définie sur true :
patchScriptFilePath- nom du dossier local ou URL http/https du script de correctifverificationScriptFilePath- nom du dossier local ou URL http/https du script de vérificationmaintenanceModeType- type de mode de maintenance (valeurs : IMM/PMM)verificationScriptTimeoutSec- délai d’expiration du script de vérification en secondesrebootTimeoutSec- délai d’expiration du redémarrage du nœud en secondes
Avant d’exécuter la commande liaRunOsPatching, vous devez d’abord vous connecter et obtenir la configuration du système. Voir l’exemple ci-dessous.
Exemple de commande
* La variable de jeton contient le jeton Keycloak renvoyé par /auth/login ou /api/gatewayLogin.
**<ip-address> : adresse IP d’un serveur http contenant les scripts à exécuter.
Obtenez le JSON d’une configuration système, qui sera la charge utile de la commande de correctif (doit remplacer manuellement liaPassword et mdmPassword de null à une chaîne).
Saisissez la sortie de cette commande (avec des mots de passe fixes) dans le fichier 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
Exécutez la commande de correctif :
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
Logs (Fichiers journaux)
Passerelle :
- /opt/emc/scaleio/gateway/logs/scaleio.log
- /opt/emc/scaleio/gateway/logs/scaleio-trace.log
LIA :
/opt/emc/scaleio/lia/logs/trc.x
Astuce : Commutateur spécial pour conserver le script dans le nœud lors du dépannage ou du test :
- Modifiez le fichier /opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.properties
- Recherchez le champ « ospatching.delete.scripts=false »
- Sélectionnez true pour le dépannage (la valeur par défaut est false)