Windows 用の仮想マシン拡張機能とその機能Virtual machine extensions and features for Windows

Azure 仮想マシン拡張機能は、Azure Virtual Machines でのデプロイ後の構成と自動タスクを提供する複数の小さなアプリケーションです。Azure virtual machine extensions are small applications that provide post-deployment configuration and automation tasks on Azure virtual machines. たとえば、仮想マシンでソフトウェアのインストール、ウイルス対策保護、または Docker 構成が必要な場合、VM 拡張機能を使って、これらのタスクを実行できます。For example, if a virtual machine requires software installation, anti-virus protection, or Docker configuration, a VM extension can be used to complete these tasks. Azure VM 拡張機能は、Azure CLI、PowerShell、Azure Resource Manager テンプレート、Azure Portal を使って実行できます。Azure VM extensions can be run by using the Azure CLI, PowerShell, Azure Resource Manager templates, and the Azure portal. 拡張機能は、新しい仮想マシン デプロイにバンドルすることも、既存の任意のシステムに対して実行することもできます。Extensions can be bundled with a new virtual machine deployment or run against any existing system.

このドキュメントでは、仮想マシン拡張機能の概要と仮想マシン拡張機能を使う場合の前提条件を示し、仮想マシン拡張機能を検出、管理、削除する方法についてのガイダンスを提供します。This document provides an overview of virtual machine extensions, prerequisites for using virtual machine extensions, and guidance on how to detect, manage, and remove virtual machine extensions. 構成がそれぞれ固有の VM 拡張機能が多数あるため、このドキュメントでは一般的な情報を示します。This document provides generalized information because many VM extensions are available, each with a potentially unique configuration. 拡張機能に固有の詳細情報については、それぞれの拡張機能のドキュメントをご覧ください。Extension-specific details can be found in each document specific to the individual extension.

ユース ケースとサンプルUse cases and samples

多くの異なる Azure VM 拡張機能が使用可能ですが、そのユース ケースはそれぞれ異なります。There are many different Azure VM extensions available, each with a specific use case. ユース ケースの例を次にいくつか示します。Some example use cases are:

プロセス固有の拡張機能のほか、カスタム スクリプト拡張機能を Windows と Linux の両方の仮想マシンで使用できます。In addition to process-specific extensions, a Custom Script extension is available for both Windows and Linux virtual machines. Windows 用カスタム スクリプト拡張機能では、仮想マシンで実行する任意の PowerShell スクリプトを使用できます。The Custom Script extension for Windows allows any PowerShell script to be run on a virtual machine. これは、ネイティブの Azure ツールが提供可能な構成以上の構成を必要とする Azure のデプロイを設計する場合に役立ちます。This is useful when you're designing Azure deployments that require configuration beyond what native Azure tooling can provide. 詳しくは、Windows VM のカスタム スクリプト拡張機能に関する記事をご覧ください。For more information, see Windows VM Custom Script extension.

前提条件Prerequisites

仮想マシン拡張機能には、それぞれ独自の前提条件があります。Each virtual machine extension may have its own set of prerequisites. たとえば、Docker VM 拡張機能には、サポートされている Linux ディストリビューションの前提条件があります。For instance, the Docker VM extension has a prerequisite of a supported Linux distribution. 個々の拡張機能の要件については、その拡張機能のドキュメントで詳しく説明されています。Requirements of individual extensions are detailed in the extension-specific documentation.

Azure VM エージェントAzure VM agent

Azure VM エージェントは、Azure 仮想マシンと Azure ファブリック コントローラーとの相互動作を管理します。The Azure VM agent manages interaction between an Azure virtual machine and the Azure fabric controller. VM エージェントは、Azure Virtual Machines のデプロイと管理の多くの機能面を担当します (VM 拡張機能の実行など)。The VM agent is responsible for many functional aspects of deploying and managing Azure virtual machines, including running VM extensions. Azure VM エージェントは、Azure Marketplace イメージにプレインストールされており、サポートされているオペレーティング システムにインストールすることができます。The Azure VM agent is preinstalled on Azure Marketplace images and can be installed on supported operating systems.

サポートされているオペレーティング システムとインストール手順については、Azure 仮想マシンのエージェントに関する記事をご覧ください。For information on supported operating systems and installation instructions, see Azure virtual machine agent.

VM 拡張機能の検出Discover VM extensions

Azure Virtual Machines と共に、さまざまな VM 拡張機能を使用できます。Many different VM extensions are available for use with Azure virtual machines. 完全な一覧を表示するには、Azure Resource Manager の PowerShell モジュールを使って、次のコマンドを実行します。To see a complete list, run the following command with the Azure Resource Manager PowerShell module. このコマンドの実行時に、目的の場所を指定してください。Make sure to specify the desired location when you're running this command.

Get-AzureRmVmImagePublisher -Location WestUS | `
Get-AzureRmVMExtensionImageType | `
Get-AzureRmVMExtensionImage | Select Type, Version

VM 拡張機能の実行Run VM extensions

Azure 仮想マシン拡張機能は既存の仮想マシンで実行できます。これは、構成の変更や、デプロイ済みの VM での接続の回復が必要な場合に便利です。Azure virtual machine extensions can be run on existing virtual machines, which is useful when you need to make configuration changes or recover connectivity on an already deployed VM. また、VM 拡張機能を Azure Resource Manager テンプレートのデプロイにバンドルすることもできます。VM extensions can also be bundled with Azure Resource Manager template deployments. Resource Manager テンプレートで拡張機能を使うと、Azure Virtual Machines をデプロイし、デプロイ後の操作を必要とすることなく構成できます。By using extensions with Resource Manager templates, you can enable Azure virtual machines to be deployed and configured without the need for post-deployment intervention.

既存の仮想マシンに対して拡張機能を実行するには、次の方法を使用します。The following methods can be used to run an extension against an existing virtual machine.

PowerShellPowerShell

個々の拡張機能を実行するための PowerShell コマンドがいくつか存在します。Several PowerShell commands exist for running individual extensions. 一覧を表示するには、次の PowerShell コマンドを実行します。To see a list, run the following PowerShell commands.

get-command Set-AzureRM*Extension* -Module AzureRM.Compute

次のような出力が表示されます。This provides output similar to the following:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Set-AzureRmVMAccessExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMADDomainExtension                     2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMAEMExtension                          2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMBackupExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMBginfoExtension                       2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMChefExtension                         2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMCustomScriptExtension                 2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDiagnosticsExtension                  2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDiskEncryptionExtension               2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMDscExtension                          2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMExtension                             2.2.0      AzureRM.Compute
Cmdlet          Set-AzureRmVMSqlServerExtension                    2.2.0      AzureRM.Compute

次の例では、カスタム スクリプト拡張機能を使って、ターゲットの仮想マシン上に GitHub リポジトリからスクリプトをダウンロードし、スクリプトを実行します。The following example uses the Custom Script extension to download a script from a GitHub repository onto the target virtual machine and then run the script. カスタム スクリプト拡張機能について詳しくは、カスタム スクリプト拡張機能の概要に関する記事をご覧ください。For more information on the Custom Script extension, see Custom Script extension overview.

Set-AzureRmVMCustomScriptExtension -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" -Name "myCustomScript" `
    -FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
    -Run "Create-File.ps1" -Location "West US"

この例では、VM アクセス拡張機能を使って、Windows 仮想マシンの管理パスワードをリセットします。In this example, the VM Access extension is used to reset the administrative password of a Windows virtual machine. VM アクセス拡張機能について詳しくは、Windows VM でのリモート デスクトップ サービスのリセットに関する記事をご覧ください。For more information on the VM Access extension, see Reset Remote Desktop service in a Windows VM.

$cred=Get-Credential

Set-AzureRmVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
    -Location WestUS -UserName $cred.GetNetworkCredential().Username `
    -Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

Set-AzureRmVMExtension コマンドを使って、任意の VM 拡張機能を開始できます。The Set-AzureRmVMExtension command can be used to start any VM extension. 詳しくは、Set-AzureRmVMExtension のリファレンスに関する記事をご覧ください。For more information, see the Set-AzureRmVMExtension reference.

Azure PortalAzure portal

VM 拡張機能は、Azure Portal から既存の仮想マシンに適用できます。A VM extension can be applied to an existing virtual machine through the Azure portal. そのためには、使う仮想マシンを選び、[拡張機能] を選択して [追加] をクリックします。To do so, select the virtual machine you want to use, choose Extensions, and click Add. これで、使用可能な拡張機能の一覧が表示されます。This provides a list of available extensions. 必要な拡張機能を選び、ウィザードの手順に従います。Select the one you want and follow the steps in the wizard.

次のイメージは、Azure Portal からの Microsoft Antimalware 拡張機能のインストールを示しています。The following image shows the installation of the Microsoft Antimalware extension from the Azure portal.

antimalware 拡張機能のインストール

Azure リソース マネージャーのテンプレートAzure Resource Manager templates

VM 拡張機能を Azure Resource Manager テンプレートに追加し、テンプレートのデプロイを使って実行できます。VM extensions can be added to an Azure Resource Manager template and executed with the deployment of the template. テンプレートを使った拡張機能のデプロイは、完全に構成された Azure デプロイの作成に役立ちます。Deploying extensions with a template is useful for creating fully configured Azure deployments. たとえば、次の JSON は、負荷分散された一連の仮想マシンと Azure SQL データベースをデプロイし、各 VM に .NET Core アプリケーションをインストールする Resource Manager テンプレートからの抜粋です。For example, the following JSON is taken from a Resource Manager template that deploys a set of load-balanced virtual machines and an Azure SQL database, and then installs a .NET Core application on each VM. VM 拡張機能はソフトウェアのインストールに対応します。The VM extension takes care of the software installation.

詳しくは、Resource Manager テンプレート全体をご覧ください。For more information, see the full Resource Manager template.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

詳しくは、「Windows VM 拡張機能を使用した Azure Resource Manager テンプレートの作成」をご覧ください。For more information, see Authoring Azure Resource Manager templates with Windows VM extensions.

VM 拡張機能のデータの保護Secure VM extension data

VM 拡張機能の実行時には、資格情報、ストレージ アカウント名、ストレージ アカウント アクセス キーなどの機密情報を含めなければならない場合があります。When you're running a VM extension, it may be necessary to include sensitive information such as credentials, storage account names, and storage account access keys. 多くの VM 拡張機能には、データを暗号化し、ターゲットの仮想マシン内でのみ暗号化を解除する保護された構成が含まれます。Many VM extensions include a protected configuration that encrypts data and only decrypts it inside the target virtual machine. 拡張機能には、それぞれ固有の保護された構成スキーマがあります。スキーマについては、拡張機能のドキュメントで詳しく説明されています。Each extension has a specific protected configuration schema that will be detailed in extension-specific documentation.

次の例は、Windows 用カスタム スクリプト拡張機能のインスタンスを示しています。The following example shows an instance of the Custom Script extension for Windows. 実行するコマンドに一連の資格情報が含まれていることにご注意ください。Notice that the command to execute includes a set of credentials. この例では、実行するコマンドは暗号化されません。In this example, the command to execute will not be encrypted.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ],
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

command to execute プロパティを protected 構成に移動すると、実行文字列が保護されます。Secure the execution string by moving the command to execute property to the protected configuration.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.4",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

VM 拡張機能のトラブルシューティングTroubleshoot VM extensions

各 VM 拡張機能には、固有のトラブルシューティング手順が存在する場合があります。Each VM extension may have specific troubleshooting steps. たとえば、カスタム スクリプト拡張機能を使う場合、スクリプト実行の詳細は、拡張機能が実行された仮想マシンのローカルに保存されます。For instance, when you're using the Custom Script extension, script execution details can be found locally on the virtual machine on which the extension was run. 拡張機能に固有のトラブルシューティング手順は、拡張機能のドキュメントで詳しく説明されています。Any extension-specific troubleshooting steps are detailed in extension-specific documentation.

次のトラブルシューティング手順は、すべての仮想マシン拡張機能に適用されます。The following troubleshooting steps apply to all virtual machine extensions.

拡張機能の状態表示View extension status

仮想マシンに対して仮想マシン拡張機能を実行した後で、次の PowerShell CLI コマンドを使って、拡張機能の状態を返します。After a virtual machine extension has been run against a virtual machine, use the following PowerShell command to return extension status. 次のコマンドでは、パラメーター名を独自の値に置き換えてください。Replace example parameter names with your own values. Name パラメーターは、実行時に拡張機能に指定された名前になります。The Name parameter takes the name given to the extension at execution time.

Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

出力は次のようになります。The output looks like the following:

ResourceGroupName       : myResourceGroup
VMName                  : myVM
Name                    : myExtensionName
Location                : westus
Etag                    : null
Publisher               : Microsoft.Azure.Extensions
ExtensionType           : DockerExtension
TypeHandlerVersion      : 1.0
Id                      : /subscriptions/mySubscriptionIS/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/myExtensionName
PublicSettings          :
ProtectedSettings       :
ProvisioningState       : Succeeded
Statuses                :
SubStatuses             :
AutoUpgradeMinorVersion : False
ForceUpdateTag          :

拡張機能の実行の状態は、Azure Portal で確認することもできます。Extension execution status can also be found in the Azure portal. 拡張機能の状態を表示するには、仮想マシンを選び、[拡張機能] を選択して目的の拡張機能を選択します。To view the status of an extension, select the virtual machine, choose Extensions, and select the desired extension.

VM 拡張機能の再実行Rerun VM extensions

仮想マシン拡張機能の再実行が必要な場合があります。There may be cases in which a virtual machine extension needs to be rerun. そのためには、拡張機能を削除し、任意の実行方法で拡張機能を再実行します。You can do this by removing the extension and then rerunning the extension with an execution method of your choice. 拡張機能を削除するには、Azure PowerShell モジュールを使って次のコマンドを実行します。To remove an extension, run the following command with the Azure PowerShell module. 次のコマンドでは、パラメーター名を独自の値に置き換えてください。Replace example parameter names with your own values.

Remove-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

Azure Portalを使って拡張機能を削除することもできます。An extension can also be removed using the Azure portal. そのためには、次の手順を実行します。To do so:

  1. 仮想マシンを選びます。Select a virtual machine.
  2. [拡張機能] を選択します。Select Extensions.
  3. 目的の拡張機能を選びます。Choose the desired extension.
  4. [アンインストール] を選択します。Select Uninstall.

一般的な VM 拡張機能のリファレンスCommon VM extensions reference

拡張機能の名前Extension name 説明Description 詳細情報More information
Windows でのカスタムのスクリプト拡張機能Custom Script Extension for Windows Azure 仮想マシンに対してスクリプトを実行しますRun scripts against an Azure virtual machine Windows でのカスタムのスクリプト拡張機能Custom Script Extension for Windows
Windows での DSC 拡張機能DSC Extension for Windows PowerShell DSC (必要な状態の構成) 拡張機能PowerShell DSC (Desired State Configuration) Extension Windows での DSC 拡張機能DSC Extension for Windows
Azure 診断拡張機能Azure Diagnostics Extension Azure 診断を管理しますManage Azure Diagnostics Azure 診断拡張機能Azure Diagnostics Extension
Azure VM アクセス拡張機能Azure VM Access Extension ユーザーと資格情報を管理しますManage users and credentials Linux 用 VM アクセス拡張機能VM Access Extension for Linux