JavaScriptを有効にしてください

Azure VM アプリケーションを試し隊

 ·   5 分で読めます  ·   Kento

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 作成時にインストールすることができる機能です

ざっくり手順

  1. 必要なリソースの準備
  2. アプリケーションのインストーラーを Storage Account にアップロード
  3. Storage Account のアクセス方法の確立
  4. Compute Gallery に VM アプリケーションを登録
  5. VM の作成、アプリケーションのインストール
  6. 確認

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 コンテナを作成し、インストーラーをアップロードします

image01
インストーラーのアップロード:

3. Storage Account のアクセス方法の確立

VM アプリケーション パッケージの作成とデプロイ - Azure Virtual Machines | Microsoft Learn の手順を見ていると以下の記載があります

ストレージ アカウントは、パブリック レベルのアクセス権を備えているか、読み取り特権を持つ SAS URI を使用する必要があります。他の制限レベルではデプロイが失敗するためです。

とのことなので、SAS URI を作成します

image02
SAS URI の作成:

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

image03
VM アプリケーションの登録:

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

image04
VM アプリケーションの登録:

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

image05
VM アプリケーションの登録:

以下のスクショのように情報を入力していきます
前の手順で作成した SAS URI を入力しようと思いましたが、[参照] から対象の Blob を選択すると自動で SAS URI が入力されました
自動で入力された SAS の有効期限に不満がある場合は自作したものを入力することもできます
今回はそのままで進めました

インストールスクリプトについては下記のサイトを参考に記載しました
Visual Studio Code Silent Install (How-To Guide) – SILENT INSTALL HQ

必須以外のパラメーターはデフォルトのまま(空白も含む)で作成しました

image06
VM アプリケーションの登録:

5. VM の作成、アプリケーションのインストール

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

image07
VM の作成:

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

image08
VM アプリケーションの選択:

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

image09
VM アプリケーションの選択:

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

image10
VM アプリケーションの選択:

6. 確認

作成した VM のメニューを Azure Portal から確認してみます
拡張機能として [VMAppExtenstion] が追加されていることが確認できます
これが VM アプリケーションのために必要な拡張機能でしょうか、、

image11
VM の確認:

詳細を見るとインストールに成功していることがわかります

image13
VM アプリケーションの確認:

[VM アプリケーション] タブも見てみると、無事に vscode の文字が確認できました

image12
VM アプリケーションの確認:

作成した VM にログインしてみます
デスクトップに Visual Studio Code がインストールされていることが確認できました

image14
VM アプリケーションの確認:

まとめ

VM アプリケーションを使うことで、アプリケーションのインストールを行うことができました
アプリケーションの更新があった場合、VM イメージを更新する必要がなくアプリケーションのみ更新することができます

参考

共有

Kento
著者
Kento
2020年に新卒で IT 企業に入社. インフラエンジニア(主にクラウド)として活動中