Virtual Machine Scale Setsでの VM 拡張機能のプロビジョニング エラー

この記事では、 VmExtensionProvisioningErrorVMExtensionHandlerNonTransientError、または VMExtensionProvisioningTimeout エラーの解決に関するガイダンスを提供します。これは、仮想マシン スケール セットをデプロイ、更新、再イメージ化、開始、またはスケーリングしようとしたときに発生します。

注:

Virtual Machine Scale Setsのコンテキストでは、これらのエラー メッセージの "VM" は、特定の仮想マシン スケール セット内のインスタンスを参照します。

現象

次の例のように、 VMExtensionProvisioningErrorVMExtensionHandlerNonTransientError、または VMExtensionProvisioningTimeout エラーが表示されます。

'statusMessage': '{\\'status\\':\\'Failed\\',\\'error\\':{\\'code\\':\\'ResourceOperationFailure\\',\\'message\\':\\'The resource operation completed with terminal provisioning state 'Failed'.\\',\\'details\\':[{\\'code\\':\\'VMExtensionProvisioningError\\',\\'message\\':\\'Multiple VM extensions failed to be provisioned on the VM. Please see the VM extension instance view for other failures.

{'status': 'Failed','error': {'code':'VMExtensionHandlerNonTransientError','message': 'The handler for VM extension type 'Microsoft.EnterpriseCloud.Monitoring.OmsAgentForLinux' has reported terminal failure for VM extension 'OmsAgentForLinux' with error message: '[ExtensionOperationError] Non-zero exit code: 10

'statusMessage': '{\\'status\\':\\'Failed\\',\\'error\\':{\\'code\\':\\'ResourceOperationFailure\\',\\'message\\':\\'The resource operation completed with terminal provisioning state 'Failed'.\\',\\'details\\':[{\\'code\\':\\'VMExtensionProvisioningTimeout\\',\\'message\\':\\'Provisioning of VM extension configure-settings has timed out. Extension provisioning has taken too long to complete.

原因

VM 拡張機能がハングしているか、プロビジョニング状態中に失敗しました。

拡張機能のエラーに関する詳細情報を取得する

このエラーの解決を開始するには、まず、影響を受ける拡張機能とインスタンスを特定する必要があります。 これを行うには、次の Azure コマンド ライン インターフェイス (Azure CLI) コマンドを実行します。

az vmss list-instances --resource-group MyResourceGroup --name MyVmss --query "[].{instanceId:instanceId, extension:resources[].id, extProvisioningState:resources[].provisioningState}"

このコマンドの出力には、各インスタンスの拡張機能のプロビジョニング状態が表示されます。 次の出力例は、この拡張機能の情報をインスタンス ID でグループ化する方法を示しています。

インスタンス ID が強調表示された出力のスクリーンショット。

特定のインスタンス専用の各セクション内の上部にある "extProvisioningState" リストには、そのインスタンスにインストールされている拡張機能のプロビジョニング状態が表示されます。 この一覧の後に "extension" リストが続き、拡張機能の名前が同じ対応する順序で表示されます。

たとえば、次の出力例では、このインスタンスの最初のプロビジョニング状態 "Failed" は、最初の拡張機能 "customScript" に対応しています。プロビジョニングの状態を一覧表示されている拡張機能と照合することで、この例では、2 番目と 3 番目の拡張機能が同じインスタンスで正常にプロビジョニングされたと判断することもできます。

プロビジョニング状態と一致した拡張機能名を示す出力のスクリーンショット。

仮想マシン スケール セットのスケールアウトを試みる

すべてのインスタンスで拡張機能が失敗していない場合は、仮想マシン スケール セットに新しいインスタンスを追加し、拡張機能のプロビジョニングが成功したかどうかを確認します。 成功した場合は、拡張機能のプロビジョニングが失敗したインスタンスを削除します。

影響を受けたインスタンスのログを読み取る

エラーの原因をさらに把握するには、影響を受けるインスタンスにサインインします。 仮想マシン スケール セットの OS と影響を受ける拡張機能に応じて、適切なログに移動し、影響を受ける時間枠を確認します。

  • Windows Virtual Machine Scale Sets: C:\WindowsAzure\logs\plugins\ExtensionName\Extension.log
  • Linux Virtual Machine Scale Sets: /var/log/plugins/ExtensionName/Extension.log

失敗した拡張機能がベスト プラクティスに従っていることを確認する

カスタム スクリプト拡張機能 (CSE) や Desired State Configuration (DSC) など、拡張機能がカスタマイズ可能な場合は、必要なすべての前提条件と推奨されるベスト プラクティスに従っていることを確認します。

拡張機能を再インストールする

  1. 仮想マシン スケール セットの [ 拡張機能 ] ブレードで、プロビジョニング エラーがある拡張機能を選択します。

  2. [アンインストール] をクリックします。

    アンインストール ボタンが強調表示されている [拡張機能] ブレードのスクリーンショット

  3. [ 拡張機能 ] ブレードで、[ 追加] をクリックします。

  4. 同じ拡張機能を選択して再インストールします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。