Azure VM はイメージを使用して作成します
このイメージには OS だけでなく、事前インストールしたアプリケーションを含めることができます
このアプリケーションに更新があると、イメージを更新する必要があります
そのため、アプリケーションの更新頻度によっては、イメージの更新が面倒になることがあります
---
title: Azure VM イメージの構成
---
graph LR;
%%グループとサービス
subgraph VMImage["Azure VM イメージ"]
direction LR
OS["OS"]
App1["アプリケーション1"]
App2["アプリケーション2"]
App3["アプリケーション3"]
end
subgraph VMImage2["Azure VM イメージ"]
direction LR
OS2["OS"]
App21["アプリケーション1改"]
App22["アプリケーション2"]
App23["アプリケーション3"]
end
%%サブグラフのスタイル
classDef OSClass fill:#46d,color:#fff,stroke:#fff
class OS,OS2 OSClass
classDef AppClass fill:#46d,color:#fff,stroke:#fff
class App1,App2,App3,App21,App22,App23 AppClass
%% 関係
VMImage -->|イメージの更新| VMImage2
それを解決する方法として、イメージの中にアプリケーションを含めずに個別管理をするのが VM アプリケーションです
---
title: Azure VM イメージとアプリケーションを個別管理
---
graph TB;
%%グループとサービス
subgraph VMImage["Azure VM イメージ"]
OS["OS"]
end
subgraph appgroup["Azure Compute Gallery"]
subgraph App1["アプリケーション定義1"]
direction LR
App11["アプリケーション1"]
App21["アプリケーション1改"]
end
subgraph App2["アプリケーション定義2"]
App22["アプリケーション2"]
end
subgraph App3["アプリケーション定義3"]
App33["アプリケーション3"]
end
end
%%サブグラフのスタイル
classDef OSClass fill:#46d,color:#fff,stroke:#fff
class OS OSClass
classDef AppClass fill:#46d,color:#fff,stroke:#fff
class App1,App2,App3 AppClass
%% 関係
App11 -->|アプリの更新| App21
VM アプリケーションとは
詳細は Azure Compute Gallery の VM アプリケーションの概要 - Azure Virtual Machines | Microsoft Learn を参照してください
簡単に言うとアプリケーションのインストーラーを Storage Account にアップロードし、VM 作成時にインストールすることができる機能です
ざっくり手順
- 必要なリソースの準備
- アプリケーションのインストーラーを Storage Account にアップロード
- Storage Account のアクセス方法の確立
- Compute Gallery に VM アプリケーションを登録
- VM の作成、アプリケーションのインストール
- 確認
1. 必要なリソースの準備
事前にいくつかのリソースを作成しておきます。詳細は省きます
- Storage Account
- Azure Compute Gallery
- Vnet
- NSG
architecture-beta
group rg1(azure:resource-groups)[Resource Group]
service storage(azure:storage-accounts)[Storage Account] in rg1
service gallery(azure:azure-compute-galleries)[Azure Compute Gallery] in rg1
group vnet(azure:virtual-networks)[Vnet] in rg1
service subnet(azure:subnet)[Subnet] in vnet
service nsg(azure:network-security-groups)[NSG] in rg1
nsg:T --> B:subnet
2. アプリケーションのインストーラーを Storage Account にアップロード
今回は題材として Visual Studio Code をインストールします
Download Visual Studio Code - Mac, Linux, Windows からインストーラーをダウンロードします
次に Storage Account に Blob コンテナを作成し、インストーラーをアップロードします

3. Storage Account のアクセス方法の確立
VM アプリケーション パッケージの作成とデプロイ - Azure Virtual Machines | Microsoft Learn の手順を見ていると以下の記載があります
ストレージ アカウントは、パブリック レベルのアクセス権を備えているか、読み取り特権を持つ SAS URI を使用する必要があります。他の制限レベルではデプロイが失敗するためです。
とのことなので、SAS URI を作成します

4. Compute Gallery に VM アプリケーションを登録
Compute Gallery に VM アプリケーションを登録します
Compute Gallery > 追加 > VM アプリケーション定義 の順に進みます

アプリケーション定義の名前と OS の種類を入力します
その他の部分はデフォルトのままで進めます

作成したアプリケーション定義に Storage Account にアップロードしたアプリケーションの情報を入力します

以下のスクショのように情報を入力していきます
前の手順で作成した SAS URI を入力しようと思いましたが、[参照] から対象の Blob を選択すると自動で SAS URI が入力されました
自動で入力された SAS の有効期限に不満がある場合は自作したものを入力することもできます
今回はそのままで進めました
インストールスクリプトについては下記のサイトを参考に記載しました
Visual Studio Code Silent Install (How-To Guide) – SILENT INSTALL HQ
必須以外のパラメーターはデフォルトのまま(空白も含む)で作成しました

5. VM の作成、アプリケーションのインストール
VM アプリケーションが作成できたので VM を作成して検証してみます
Marketplace で公開されている素の Windows Server 2022 を選択しました

[詳細] タブで VM アプリケーションを選択します

VM アプリケーションの選択画面で先ほど作成した VM アプリケーションを選択します

複数の VM アプリケーションをインストールする場合は順番を選択することができます

6. 確認
作成した VM のメニューを Azure Portal から確認してみます
拡張機能として [VMAppExtenstion] が追加されていることが確認できます
これが VM アプリケーションのために必要な拡張機能でしょうか、、
詳細を見るとインストールに成功していることがわかります
[VM アプリケーション] タブも見てみると、無事に vscode の文字が確認できました
作成した VM にログインしてみます
デスクトップに Visual Studio Code がインストールされていることが確認できました
まとめ
VM アプリケーションを使うことで、アプリケーションのインストールを行うことができました
アプリケーションの更新があった場合、VM イメージを更新する必要がなくアプリケーションのみ更新することができます