PowerFlex:ホストでスクリプトを実行する(別名OSパッチ適用)機能の説明
Summary: この機能は、MDMまたはSDSコンポーネントをホストするサーバー上でユーザー提供のスクリプトを実行するために使用されます。 この機能は、一連のLinuxシェル コマンドの実行、オペレーティング システムのパッチ適用など、PowerFlexシステム外部のあらゆる目的に使用できます。
Instructions
UI - PFMP以前(PowerFlex 4.x)
必要条件
必須 - メイン スクリプトは次のディレクトリーにあります。 /opt/emc/scaleio/lia/bin/ (実行権限あり)
- スクリプト名はpatch_scriptにする必要があります
オプション - 検証スクリプトは次のディレクトリーにあります。 /opt/emc/scaleio/lia/bin/ (実行権限あり)
- スクリプト名はverification_scriptにする必要があります
> この機能はLinux(RHELおよびSLES)でのみサポートされています。
>この機能は、実行終了時に終了コードが0(ゼロ)であるかどうかを確認します。
>終了コードとスクリプトの実行は、LIAログで確認できます。
>ゲートウェイを使用してプロセスを実行する前に、patch_scriptとverification_scriptをテストするのはお客様の責任です。
> 機能の場所:[Maintain]>[System Logs and Analysis]>[Run Script on Hosts]
手順とフロー
スクリプトの実行:
1.システム全体 - すべてのPowerFlexノード
デフォルトでは、スクリプトは最初のホストの保護ドメイン(PD)で実行され、その後2番目のホストに移動します。
[In parallel on different Protection Domain]が無効 - デフォルトでは、このチェックボックスはオフになっています。
[In parallel on different Protection Domain]が有効 - このオプションを選択すると、patch_scriptはすべてのPDで並行して実行されます。
MDMを持たないPDが最初に実行され、クラスター ノードが最後に実行されます。
2.保護ドメイン - 特定のPD
MDMを持たないPDが最初に実行され、MDMクラスター ノードが最後に実行されます。
3.フォールト セット - 特定のFS
MDMを持たないFSが最初に実行され、MDMクラスター ノードが最後に実行されます。
4.SDS - 単一のSDSノード
実行中の構成:
1.[Stop process on script failure]
1.1[Stop process on script failure]が有効 - デフォルトでは、このチェックボックスはオンになっています。
patch_script(およびverification_scriptを選択した場合)が0(ゼロ)以外のコードで終了すると、実行全体が失敗して停止します。
1.2[Stop process on script failure]が無効
patch_scriptが失敗した場合、そのノードの実行は失敗し、システムは次のノードに移動し、そのノードでpatch_scriptを実行します。
2.[Script timeout]- patch_scriptが終了するまで待機する時間
スクリプトの実行時のタイムアウト値は、ユーザーが設定可能です。
デフォルトでは15分に設定 → PowerFlex 3.6より古いバージョンでは、バグが原因でタイムアウトが15分にハード コードされています。
スクリプトの実行がタイムアウトすると、実行全体が失敗して停止します
3.[Verification script]- patch_scriptの実行後にverification_scriptを実行しますか?
3.1[Run]- patch_scriptが実行され、完了すると、patch_scriptポストアクションが再起動するかどうかに応じて(セクション#4)、verification_scriptが実行されます。
3.2[Do not Run]- patch_scriptが実行され、完了すると、実行全体が停止し、正常に終了します。
4.[Post script action]- patch_scriptの実行後にノードを再起動しますか?
4.1[Reboot]- patch_scriptの実行が完了し、コード0(ゼロ)で終了した後、ノードが再起動し、verification_scriptの実行が選択されたかどうかに応じて(セクション#3)停止または続行します。
ゲートウェイが再起動するノード上にある場合、再起動は行われず、操作は成功し、手動で再起動するように通知するポップアップが表示されます。
4.2[Do not reboot]- patch_scriptの実行が完了し、コード0(ゼロ)で終了した後、ノードは再起動せず、verification_scriptの実行が選択されたかどうかに応じて(セクション#3)停止または続行します。
[Run Script on Hosts]:
[Run Script on Hosts]を押す --> 検証フェーズ が開始します。
このフェーズでは、ノードの各LIAにリクエストを送信して、次のディレクトリーの下にpatch_scriptファイルと verification_scriptファイル(選択した場合)が存在することを確認します。 /opt/emc/scaleio/lia/bin/
コード ロジックは、実行するノードのランダムなリストを(前述の条件に従って)選択します。
[Start execution phase]:
[Start execution phase]ボタンを押します。
1.ゲートウェイは、次の確認を行います。
a. 障害が発生している容量がないことを確認します。
b.有効なスペア容量を確認します。
c.有効なクラスター状態を確認します。
d.他のSDSがメンテナンス モードになっていないことを確認します。
2.SDSのメンテナンス モードを開始します。
3.Patch_scriptを実行します。正常に実行されると、ファイルは削除され、同じディレクトリーにbackup_patch_script
という名前のバックアップ ファイルが作成されます。
4.ホストを再起動します(選択した場合)
5.verification_scriptを実行します(選択した場合)。正常に実行されると、ファイルは削除され、同じディレクトリーにbackup_verification_scriptという名前のバックアップ ファイルが作成されます
6.SDSのメンテナンス モードを終了します。
7.操作が正常に完了しました。
RESTAPI - PFMP後(PowerFlex 4.x)
- オプションの再起動とオプションの検証スクリプトを使用して、すべてまたは一部のシステム ノードでパッチ スクリプトを実行します。操作には、ある程度の並列性があります。
- スクリプト ファイルは、ノードのフォルダー/opt/emc/scaleio/lia/binに格納する必要があります。または、GWによってノードにアップロードすることもできます。スクリプトは、GWローカル フォルダーから取得するか、HTTP/HTTPS共有からダウンロードすることができます。
- SdsIdsやmdmIdsのリストを指定して、実行するノードを明示的に選択できます。
- ファイル名はハード コード化されており、変更できません(patch_scriptとverification_script)。
RESTコマンド
- /im/types/Configuration/actions/liaRunOsPatching
必須パラメーター
- 次のパラメーターのいずれかが必須です。pdIds/fsIds/sdsIds/mdmIds / executeOnAllSdss / executeOnAllMdms
pdIds- 次の保護ドメイン(PD Ids)の一部であるすべてのノードで、10進数形式で実行しますfsIds- 次のフォールト セット(FS Ids)の一部であるすべてのノードで、10進数形式で実行しますsdsIds- IdsでリストされたすべてのSDSで、10進数形式で実行しますmdmIds- IdsでリストされたすべてのMDMで、10進数形式で実行しますexecuteOnAllSdss- すべてのSDSで実行(true/false)executeOnAllMdms- すべてのMDMで実行(true/false)
オプションのパラメーター
isRebootRequired- パッチ スクリプトの実行後に各ノードを再起動する必要がある(値:true/false)isVerificationScriptRequired- 検証スクリプトを各ノードで実行する必要がある(値:true/false)isRunningInParallelOnPds- 異なるPDに属するノードで操作を並列に実行する必要がある(値:true/false)isStopProcessingOnScriptFailure- スクリプトが失敗した場合に操作全体が停止する必要がある(値:true/false)TimeoutMs- パッチ スクリプトを実行するためのタイムアウト(ミリ秒単位)isUploadFileNeeded- GWはスクリプトをノードにアップロードする必要がある(値:true/false)
以下のフィールドは、 isUploadFileNeeded が「true」の場合に関連します。
patchScriptFilePath- パッチ スクリプトのローカル フォルダー名またはhttp/https URLverificationScriptFilePath- 検証スクリプトのローカル フォルダー名またはhttp/https URLmaintenanceModeType- メンテナンス モード タイプ(値:IMM/PMM)verificationScriptTimeoutSec- 検証スクリプトのタイムアウト(秒単位)rebootTimeoutSec- ノードの再起動タイムアウト(秒単位)
liaRunOsPatchingコマンドを実行する前に、まずログインしてシステム構成を取得する必要があることに注意してください(以下の例を参照)。
コマンド例
*token変数には、/auth/loginまたは/api/gatewayLoginから返されたKeycloakトークンが含まれます。
**<ip-address> - 実行するスクリプトを含むhttpサーバーのIPアドレス
patchコマンドのペイロードとなるシステム構成のjsonを取得します(liaPasswordとmdmPasswordを手動でnullから一部の文字列に置き換える必要があります)。
次のコマンドの出力(固定パスワードを使用)を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
次のパッチ コマンドを実行します。
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
ログ
ゲートウェイ:
- /opt/emc/scaleio/gateway/logs/scaleio.log
- /opt/emc/scaleio/gateway/logs/scaleio-trace.log
LIA:
/opt/emc/scaleio/lia/logs/trc.x
ヒント - トラブルシューティングまたはテスト時にスクリプトをノードに保持する特別なスイッチ:
- ファイル/opt/emc/scaleio/gateway/webapps/ROOT/WEB-INF/classes/gatewayInternal.propertiesを編集します
- フィールド「ospatching.delete.scripts=false」を検索します。
- トラブルシューティングのためにtrueに変更します(デフォルトはfalseです)