VM アプリケーションは、仮想マシンのアプリケーションの管理、共有、およびグローバル配布を簡素化する Azure Compute Gallery (旧称 Shared Image Gallery) のリソースの種類です。
この記事では、既に Azure Compute Gallery があることを前提としています。 ギャラリーをまだ作成していない場合は、最初にギャラリーを作成します。 詳細については、「リソースを格納および共有するためのギャラリーを作成する」を参照してください。
ストレージ アカウントは、パブリック レベルのアクセス権を備えているか、読み取り特権を持つ SAS URI を使用する必要があります。他の制限レベルではデプロイが失敗するためです。 Azure Storage Explorer を使用すると、SAS URI をまだ作成していない場合は、迅速に作成できます。
- Azure portal に移動し、Azure Compute Gallery を検索して選択します。
- 一覧から使うギャラリーを選びます。
- ギャラリーのページで、ページの上部にある [追加] を選択し、ドロップダウンから [VM アプリケーション定義] を選択します。 [VM アプリケーション定義の作成] ページが開きます。
- [基本] タブで、アプリケーションの名前を入力し、Linux または Windows を実行している VM 用のアプリケーションであるかどうかを選択します。
- VM アプリケーション定義に対して次のいずれかのオプション設定を指定する場合は、[発行オプション] タブを選択します。
- VM アプリケーション定義の説明。
- 有効期限の終了日
- 使用許諾契約書へのリンク
- プライバシーに関する声明の URI
- リリース ノートの URI
- 完了したら、 [確認および作成] を選択します。
- 確認が完了したら、 [作成] を選択して定義をデプロイします。
- デプロイが完了したら、[リソースに移動] を選択します。
- アプリケーションのページで、[VM アプリケーション バージョンの作成] を選択します。 [VM アプリケーション バージョンの作成] ページが開きます。
- 1.0.0 などのバージョン番号を入力します。
- アプリケーション パッケージをアップロードしたリージョンを選択します。
- [ソース アプリケーション パッケージ] の [参照] を選択します。 ストレージ アカウントを選択し、パッケージが格納されているコンテナーを選択します。 一覧からパッケージを選択し、完了したら [選択] を選択します。 または、必要に応じて、このフィールドに SAS URI を貼り付けることができます。
- インストール スクリプトを入力します。 アンインストール スクリプトと更新スクリプトを指定することもできます。 スクリプトの作成方法については、概要を参照してください。
- 既定の構成ファイルがストレージ アカウントにアップロードされている場合は、[既定の構成] で選択できます。
- VM の作成時にこのバージョンを最新バージョンとして表示しない場合は、[最新バージョンから除外する] を選択します。
- [終了日] では、このバージョンを廃止する日付を追跡するために、将来の日付を選択します。 自動的に削除または除外されるのではなく、独自の追跡のみを行います。
- このバージョンを他のリージョンにレプリケートするには、[レプリケーション] タブを選択し、リージョンを追加し、リージョンあたりのレプリカ数を変更します。 バージョンが作成された元のリージョンは一覧に含む必要があり、削除することはできません。
- 変更が終了したら、ページの下部にある [確認と作成] を選択します。
- 検証に成功と表示された場合は、[作成] を選択して VM アプリケーションのバージョンをデプロイします。
これで、VM を作成して、ポータルを使用して VM アプリケーションをデプロイできるようになりました。 通常どおりに VM を作成し、 [詳細設定] タブで [Select a VM application to install](インストールする VM アプリケーションの選択) を選択します。
一覧から VM アプリケーションを選択し、ページの下部にある [保存] を選択します。
複数の VM アプリケーションがインストールされている場合は、[詳細設定] タブで各 VM アプリケーションのインストール順序を設定し直すことができます。
VM アプリケーションを現在実行中の VM にデプロイすることもできます。 ポータルで VM の詳細を表示するときに、左側のメニューの [設定] で [拡張機能とアプリケーション] オプションを選択します。
[VM アプリケーション] を選択し、[アプリケーションの追加] を選択して VM アプリケーションを追加します。
一覧から VM アプリケーションを選択し、ページの下部にある [保存] を選択します。
VM アプリケーションのステータスを表示するには、[拡張機能 + アプリケーション] タブ/設定に移動し、VMAppExtension のステータスを確認します。
VMSS の VM アプリケーションの状態を表示するには、[VMSS] ページの [インスタンス] に移動し、そのうちの 1 つを選択してから、VMAppExtension に移動します。
VM アプリケーションには Azure CLI バージョン 2.30.0 以降が必要です。
az sig gallery-application create を使用して VM アプリケーション定義を作成します。 この例では、Linux ベースの VM 用に myApp という名前の VM アプリケーション定義を作成します。
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
az sig gallery-application version create を使用して、VM アプリケーションのバージョンを作成します。 バージョンで許可されている文字は、数字とピリオドです。 数字は、32 ビット整数の範囲内になっている必要があります。 形式:MajorVersion.MinorVersion.Patch。
パラメーターの値を独自の値に置き換えます。
az sig gallery-application version create \
--version-name 1.0.0 \
--application-name myApp \
--gallery-name myGallery \
--location "East US" \
--resource-group myResourceGroup \
--package-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" \
--install-command "mv myApp .\myApp\myApp" \
--remove-command "rm .\myApp\myApp" \
--update-command "mv myApp .\myApp\myApp" \
--default-configuration-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>"\
az vm application set を使用して VM アプリケーションを既存の VM に設定し、パラメーターの値を独自の値に置き換えます。
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subID}/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
VM で複数のアプリケーションを設定する場合:
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.1 \
--treat-deployment-as-failure true true
VMSS にアプリケーションを追加するには、az vmss application set を使用します。
az vmss application set \
--resource-group myResourceGroup \
--name myVmss \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
VMSS に複数のアプリケーションを追加するには:
az vmss application set \
--resource-group myResourceGroup \
--name myVmss
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.0 \
--treat-deployment-as-failure true
アプリケーション VM のデプロイ状態を確認するには、az vm get-instance-view を使用します。
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
アプリケーション VMSS のデプロイ状態を確認するには、az vmss get-instance-view を使用します。
az vmss get-instance-view --ids (az vmss list-instances -g myResourceGroup -n myVmss --query "[*].id" -o tsv) --query "[*].extensions[?name == 'VMAppExtension']"
注意
上記の VMSS デプロイ状態コマンドでは、結果を含むインスタンス ID は一覧表示されません。 各インスタンスの拡張機能の状態を持つインスタンス ID を表示するには、追加のスクリプトが必要です。 PowerShell 構文を含む次の VMSS CLI の例を参照してください。
$ids = az vmss list-instances -g myResourceGroup -n myVmss --query "[*].{id: id, instanceId: instanceId}" | ConvertFrom-Json
$ids | Foreach-Object {
$iid = $_.instanceId
Write-Output "instanceId: $iid"
az vmss get-instance-view --ids $_.id --query "extensions[?name == 'VMAppExtension']"
}
New-AzGalleryApplication
を使用して VM アプリケーション定義を作成します。 この例では、myApp という名前の Linux アプリを myGallery Azure Compute Gallery、myGallery リソース グループに作成します。自分で使用するために VM アプリケーションについての簡単な説明を付けました。 必要に応じて値を置き換えます。
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
New-AzGalleryApplication `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-Location "East US" `
-Name $applicationName `
-SupportedOSType Linux `
-Description "Backend Linux application for finance."
New-AzGalleryApplicationVersion
を使用して、アプリケーションのバージョンを作成します。 バージョンで許可されている文字は、数字とピリオドです。 数字は、32 ビット整数の範囲内になっている必要があります。 形式:MajorVersion.MinorVersion.Patch。
この例では、バージョン番号 1.0.0 を作成しています。 必要に応じて、変数の値を置き換えます。
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
New-AzGalleryApplicationVersion `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-GalleryApplicationName $applicationName `
-Name $version `
-PackageFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-DefaultConfigFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-Location "East US" `
-Install "mv myApp .\myApp\myApp" `
-Remove "rm .\myApp\myApp" `
既存の VM にアプリケーションを追加するには、アプリケーションのバージョンを取得し、それを使用して VM アプリケーションのバージョン ID を取得します。 ID を使用して、アプリケーションを VM 構成に追加します。
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
$vmName = "myVM"
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmGalleryApplication -PackageReferenceId $packageId
Add-AzVmGalleryApplication -VM $vm -GalleryApplication $app -TreatFailureAsDeploymentFailure true
Update-AzVM -ResourceGroupName $rgName -VM $vm
VMSS にアプリケーションを追加するには、次の手順を実行します。
$vmss = Get-AzVmss -ResourceGroupName $rgname -Name $vmssName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmssGalleryApplication -PackageReferenceId $packageId
Add-AzVmssGalleryApplication -VirtualMachineScaleSetVM $vmss.VirtualMachineProfile -GalleryApplication $app
Update-AzVmss -ResourceGroupName $rgName -VirtualMachineScaleSet $vmss -VMScaleSetName $vmssName
アプリケーションが成功したことを確認してください。
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
VMSS を確認するには、次の手順を実行します。
$rgName = "myResourceGroup"
$vmssName = "myVMss"
$result = Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceView
$resultSummary = New-Object System.Collections.ArrayList
$result | ForEach-Object {
$res = @{ instanceId = $_.InstanceId; vmappStatus = $_.InstanceView.Extensions | Where-Object {$_.Name -eq "VMAppExtension"}}
$resultSummary.Add($res) | Out-Null
}
$resultSummary | ConvertTo-Json -Depth 5
アプリケーション定義を作成します。
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>?api-version=2019-03-01
{
"location": "West US",
"name": "myApp",
"properties": {
"supportedOSType": "Windows | Linux",
"endOfLifeDate": "2020-01-01"
}
}
フィールド名 |
説明 |
制限事項 |
name |
ギャラリー内の VM アプリケーションの一意の名前 |
最大長は 117 文字です。 許可されている文字は、大文字または小文字、数字、ハイフン (-)、ピリオド (.)、アンダースコア (_) です。 名前の末尾にピリオド (.) を使用することはできません。 |
supportedOSType |
これが Windows か Linux アプリケーションか |
Windows または Linux: |
endOfLifeDate |
アプリケーションの将来の有効期間の終了日。 これは参照専用であり、適用されていないことに注意してください。 |
有効な未来の日付 |
VM アプリケーションのバージョンを作成します。
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>/versions/\<**versionName**\>?api-version=2019-03-01
{
"location": "$location",
"properties": {
"publishingProfile": {
"source": {
"mediaLink": "$mediaLink",
"defaultConfigurationLink": "$configLink"
},
"manageActions": {
"install": "echo installed",
"remove": "echo removed",
"update": "echo update"
},
"targetRegions": [
{
"name": "$location1",
"regionalReplicaCount": 1
},
{ "name": "$location1" }
]
},
"endofLifeDate": "datetime",
"excludeFromLatest": "true | false"
}
}
フィールド名 |
説明 |
制限事項 |
location |
VM アプリケーションバージョンのソースの場所 |
有効な Azure リージョン |
mediaLink |
アプリケーションのバージョン パッケージが含まれている url |
有効な既存のストレージ url |
defaultConfigurationLink |
省略可能。 既定の構成を含む url。デプロイ時にオーバーライドされる可能性があります。 |
有効な既存のストレージ url |
インストール |
アプリケーションをインストールするコマンド |
指定された OS の有効なコマンド |
削除 |
アプリケーションを削除するコマンド |
指定された OS の有効なコマンド |
更新 |
省略可能。 アプリケーションを更新するコマンド。 指定されていない場合、更新プログラムが必要な場合は、古いバージョンが削除され、新しいバージョンがインストールされます。 |
指定された OS の有効なコマンド |
targetRegions/name |
レプリケート先のリージョンの名前 |
Azure リージョンを検証する |
targetRegions/regionalReplicaCount |
省略可能。 作成するリージョン内のレプリカの数。 既定値は 1 です。 |
1 から 3 までの整数 |
endOfLifeDate |
アプリケーション バージョンの将来の終了日。 これはお客様参照専用であり、適用されていないことに注意してください。 |
有効な未来の日付 |
excludeFromLatest |
指定した場合、このバージョンは最新版と見なされません。 |
true または false |
VM アプリケーションのバージョンを VM に追加するには、VM で PUT を実行します。
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>?api-version=2019-03-01
{
"properties": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
VM アプリケーションを均一スケール セットに適用するには、次の手順を実行します。
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/
virtualMachineScaleSets/\<**VMSSName**\>?api-version=2019-03-01
{
"properties": {
"virtualMachineProfile": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
フィールド名 |
説明 |
制限事項 |
順序 |
省略可能。 アプリケーションをデプロイする順序。 以下を参照してください。 |
整数の検証 |
packageReferenceId |
ギャラリー アプリケーションのバージョンを参照する |
有効なアプリケーション バージョン リファレンス |
configurationReference |
省略可能。 このデプロイの構成を含むストレージ BLOB の完全な URL。 これにより、前に defaultConfiguration に指定された値がオーバーライドされます。 |
有効なストレージ BLOB リファレンス |
treatFailureAsDeploymentFailure |
省略可能。 VM アプリのプロビジョニング状態。 false に設定すると、アプリのデプロイ エラーに関係なく、プロビジョニングの状態は常に [成功] と表示されます。 |
True または False |
順序フィールドを使用して、アプリケーション間の依存関係を指定できます。 順序の規則は次のとおりです。
ケース |
インストールの意味 |
失敗の意味 |
順序が指定されていません |
順序付けられていないアプリケーションは、順序付けされたアプリケーションの後にインストールされます。 順序指定されていないアプリケーション間でのインストール順序は保証されません。 |
順序付けされていないアプリケーションや順序指定されていないアプリケーションのインストールエラーは、順序付けられていないアプリケーションのインストールに影響を与える可能性があります。 |
重複する順序値 |
アプリケーションは、同じ順序の他のアプリケーションと比較して、任意の順序でインストールされます。 同じ順序のすべてのアプリケーションは、下位のアプリケーションの後にインストールされ、順序が高いアプリケーションの前にインストールされます。 |
低い順序の以前のアプリケーションをインストールできなかった場合、この順序のアプリケーションはインストールされません。 この順序のアプリケーションのインストールに失敗した場合、上位の順序のアプリケーションはインストールされません。 |
順序の増加 |
アプリケーションは、順序が低いアプリケーションの後、順序が高いアプリケーションの前にインストールされます。 |
下位のアプリケーションをインストールできなかった場合、このアプリケーションはインストールされません。 このアプリケーションのインストールに失敗した場合、上位の順序のアプリケーションはインストールされません。 |
応答には、完全な VM モデルが含まれます。 関連する部分を次に示します。
{
"name": "{vm name}",
"id": "{vm id}",
"type": "Microsoft.Compute/virtualMachines",
"location": "{vm location}",
"properties": {
"applicationProfile": {
"galleryApplications": ""
},
"provisioningState": "Updating"
},
"resources": [
{
"name": "VMAppExtension",
"id": "{extension id}",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "centraluseuap",
"properties": "@{autoUpgradeMinorVersion=True; forceUpdateTag=7c4223fc-f4ea-4179-ada8-c8a85a1399f5; provisioningState=Creating; publisher=Microsoft.CPlat.Core; type=VMApplicationManagerLinux; typeHandlerVersion=1.0; settings=}"
}
]
}
VM アプリケーションがまだ VM にインストールされていない場合、値は空になります。
VM インスタンス ビューの結果を取得するには:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
結果は次のようになります。
{
...
"extensions" [
...
{
"name": "VMAppExtension",
"type": "Microsoft.CPlat.Core.VMApplicationManagerLinux",
"typeHandlerVersion": "1.0.9",
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "Enable succeeded: {\n \"CurrentState\": [\n {\n \"applicationName\": \"doNothingLinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install SUCCESS\"\n },\n {
\n \"applicationName\": \"badapplinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install FAILED Error executing command \u0027exit 1\u0027: command terminated with exit status=1\"\n }\n ],\n \"ActionsPerformed\": []\n}
"
}
]
}
...
]
}
VM アプリの状態は、インスタンス ビューの VM アプリ拡張機能の結果のステータス メッセージにあります。
VMSS アプリケーションの状態を取得するには:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
出力は、前の VM の例のようになります。