Azure Compute Gallery でイメージを格納、共有する

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット

イメージは、作成方法に応じて、完全な VM (アタッチされたすべてのデータ ディスクを含む) または OS ディスク単独のどちらかのコピーです。 イメージから VM を作成するときに、新しい VM のディスクを作成するために、イメージ内の VHD のコピーが使用されます。 イメージはストレージ内に残り、繰り返し使用して新しい VM を作成できます。

メンテナンスが必要なイメージや社内全体で利用可能にしたいイメージが多数ある場合は、Azure Compute Gallery をリポジトリとして使用できます。

ギャラリーを使用してイメージを格納すると、複数のリソースの種類が作成されます。

リソース 説明
イメージのソース これは、ギャラリーにイメージ バージョンを作成するために使用できるリソースです。 イメージのソースには、一般化または特殊化された既存の Azure VM、マネージド イメージ、スナップショット、VHD、または別のギャラリー内のイメージ バージョンを使用できます。
ギャラリー Azure Marketplace と同様、ギャラリーは、イメージを管理して共有するためのリポジトリです。ただし、だれがアクセスできるかは、ユーザーが制御します。
イメージ定義 イメージ定義はギャラリー内に作成され、イメージに関する情報のほか、そのイメージを使用して VM を作成するための要件に関する情報を伝達します。 この情報には、イメージが Windows または Linux のどちらか、リリース ノート、および最小と最大のメモリ要件が含まれます。 これは、イメージの種類の定義です。
イメージ バージョン イメージ バージョンは、ギャラリーを利用している場合に、VM の作成に使用します。 お使いの環境に必要な複数のイメージ バージョンを保持できます。 マネージド イメージのように、イメージ バージョンを使用して VM を作成する場合、イメージ バージョンは VM 用の新しいディスクを作成するために使用されます。 イメージ バージョンは複数回、使用できます。

ギャラリー内に複数のイメージ バージョンを保持できる仕組みを示した図

イメージ定義

イメージ定義は、イメージのバージョンの論理的なグループです。 イメージ定義には、イメージが作成された理由に関する情報が保持され、イメージのメタデータ (対象の OS、サポートされる機能、イメージの使用に関するその他の情報など) も含まれます。 イメージ定義は、特定のイメージの作成に関するすべての詳細情報についてのプランのようなものです。 VM のデプロイは、イメージ定義からではなく、定義から作成されたイメージ バージョンから行います。

各イメージ定義には、パブリッシャーオファーSKU という 3 つのパラメーターがあり、これらを組み合わせて使います。 これらは、特定のイメージ定義の検索に使われます。 3 つの値のうち 1 つまたは 2 つを共有するイメージ定義を保有することはできますが、3 つの値すべてを共有することはできません。 たとえば、以下に示したのは 3 つのイメージ定義とその値です。

イメージの定義 Publisher プラン SKU
myImage1 Contoso Finance バックエンド
myImage2 Contoso Finance フロントエンド
myImage3 テスト Finance フロントエンド

この 3 つは、それぞれ固有の値を有しています。 形式は、現在 Azure PowerShell で Azure Marketplace イメージのパブリッシャー、オファー、SKU を指定して最新バージョンの Marketplace イメージを取得する方法に似ています。 イメージ定義ごとに、これらの値の組み合わせが一意になる必要があります。

それに含めることができるイメージ バージョンの種類は、次のパラメーターによって決まります。

  • オペレーティング システムの状態 - OS の状態を一般化または特殊化に設定できます。 このフィールドは必須です。
  • オペレーティング システム - Windows または Linux にすることができます。 このフィールドは必須です。
  • Hyper-V の世代 - イメージが第 1 世代または第 2 世代 Hyper-V VHD から作成されたことを指定します。 既定値は第 1 世代です。

イメージ定義には、同じ機能、プラン、OS の状態、OS の種類などをサポートするイメージをグループ化できるように、イメージのメタデータが含まれています。 以下は、リソースをより簡単に追跡できるようにイメージ定義で設定できる他のパラメーターです。

  • 説明 - そのイメージ定義が存在する理由についての詳細な情報を提供するために使います。 たとえば、アプリケーションがプレインストールされているフロントエンド サーバー用のイメージ定義などです。

  • EULA - イメージ定義に固有のエンド ユーザー ライセンス契約を示すために使うことができます。

  • プライバシーに関する声明およびリリース ノート - リリース ノートとプライバシーに関する声明を Azure Storage に格納し、イメージ定義の一部としてそれらにアクセスするための URI を提供します。

  • 有効期限の終了日 - イメージ定義内のすべてのイメージ バージョンに対して、イメージを使用しない既定の日付を設定します。 有効期限の終了日は情報提供を目的としています。有効期限の終了日を過ぎても、ユーザーは引き続きイメージとバージョンから VM を作成できます。

  • タグ - イメージ定義を作成するときに、タグを追加することができます。 タグについて詳しくは、タグを使用したリソースの整理に関する記事をご覧ください

  • vCPU とメモリの最小値と最大値の推奨 - イメージに vCPU とメモリの推奨値がある場合は、その情報をイメージ定義に添付できます。

  • 許可されないディスクの種類 - VM に対するストレージ ニーズに関する情報を提供することができます。 たとえば、イメージが Standard HDD ディスクに適さない場合は、禁止リストにそれを追加します。

  • Marketplace イメージの購入プラン情報 - -PurchasePlanPublisher-PurchasePlanName、および -PurchasePlanProduct。 購入プラン情報の詳細については、Azure Marketplace でのイメージの検索に関するページおよび「イメージの作成時に Azure Marketplace 購入プラン情報を指定する」を参照してください。

  • アーキテクチャ

  • 機能により、ギャラリーの種類に基づいて、イメージでサポートされる追加の機能と SecurityType を指定できます。

    機能 指定可能な値 定義 サポート対象 :
    IsHibernateSupported True、False 休止状態をサポートする VM を作成します。 非公開、直接共有、コミュニティ
    IsAcceleratedNetworkSupported True、False 高速ネットワークを有効にして VM を作成します。 イメージ定義で True に設定すると、高速ネットワークをサポートしていない VM の取得はサポートされません。 非公開、直接共有、コミュニティ
    DiskControllerType ["SCSI", "NVMe"], ["SCSI"] SCSI または NVMe のディスクの種類を使用するために設定します。 NVMe VM とディスクは、NVMe をサポートするようにタグ付けされたイメージ定義でのみ取得できます。 非公開、直接共有、コミュニティ

    features パラメーターを使用して SecurityType を指定すると、VM で有効になるセキュリティ機能が制限されます。 格納されているギャラリーの種類に基づいて、一部の種類が制限されます。

    SecurityType 定義 サポート対象 :
    ConfidentialVMSupported これは、VMGS BLOB を含まない汎用 Gen2 イメージです。 Gen2 VM または機密 VM は、このイメージの種類から作成できます 非公開、直接共有、コミュニティ
    機密 VM このイメージの種類から作成できるのは機密 VM のみです プライベート
    TrustedLaunchSupported これは、VMGS BLOB を含まない汎用 Gen2 イメージです。 Gen2 VM または TrustedLaunch VM は、このイメージの種類から作成できます。 非公開、直接共有、コミュニティ
    TrustedLaunch このイメージの種類から作成できるのは TrustedLaunch VM のみです プライベート
    TrustedLaunchAndConfidentialVmSupported これは、VMGS BLOB を含まない汎用 Gen2 イメージです。 Gen2 VM、TrustedLaunch VM、または ConfidentialVM は、このイメージの種類から作成できます。 非公開、直接共有、コミュニティ

    詳細については、イメージ定義機能と SecurityType を追加するための CLI の例、またはPowerShell の例を参照してください。

    **ConfidentialVM は、利用可能なリージョンでのみサポートされています。サポートされているリージョンについては、こちらを参照してください。

イメージ バージョン

イメージ バージョンは VM の作成に使用します。 お使いの環境に必要な複数のイメージ バージョンを保持できます。 イメージ バージョンを使用して VM を作成する場合、イメージ バージョンは VM 用の新しいディスクを作成するために使用されます。 イメージ バージョンは複数回、使用できます。

イメージ バージョンのプロパティは次のようになります。

  • バージョン番号。 これはイメージ バージョンの名前として使用されます。 これは常に次の形式になります。MajorVersion.MinorVersion.Patch VM の作成時に最新イメージの使用を指定するとき、最新イメージの選択基準は最高の MajorVersion、MinorVersion、Patch の順になります。
  • ソース。 ソースには、VM、マネージド ディスク、スナップショット、マネージド イメージ、その他のイメージ バージョンを指定できます。
  • 有効期限の終了日。 イメージ バージョンの有効期限の終了日を示します。 有効期限の終了日は情報提供を目的としています。有効期限の終了日を過ぎても、ユーザーは引き続きバージョンから VM を作成できます。

一般化されたイメージと特殊化されたイメージ

Azure Compute Gallery では、2 つのオペレーティング システムの状態がサポートされています。 通常は、イメージを作成するために使用される VM は、イメージの取得前に一般化されている必要があります。 一般化は、マシンとユーザーに固有の情報を VM から削除するプロセスです。 Linux の場合は、waagent-deprovision または -deprovision+user パラメーターを使用できます。 Windows の場合、Sysprep ツールが使用されます。

特殊化された VM は、マシン固有の情報やアカウントを削除するプロセスを済ませていません。 さらに、特殊化されたイメージから作成された VM には、osProfile が関連付けられていません。 これは、特殊化されたイメージには、いくつかの利点に加えていくつかの制限があることを意味します。

  • 特殊化されたイメージから作成された VM とスケール セットは、短時間で起動して実行できます。 既に最初のブートを完了したソースから作成されるため、これらのイメージから作成された VM の起動は高速になります。
  • VM へのログインに使用できるアカウントは、その VM から作成された特殊化されたイメージを使用して作成された任意の VM で使用することもできます。
  • VM には、イメージが取得された VM の コンピューター名が割り当てられます。 競合を回避するには、コンピューター名を変更する必要があります。
  • osProfile は、secrets を使用して、何らかの秘匿性の高い情報を VM に渡す方法です。 これにより、osProfilesecrets を使用する KeyVault、WinRM、およびその他の機能を使用すると、問題が発生する可能性があります。 場合によっては、マネージド サービス ID (MSI) を使用して、これらの制限を回避できます。

リソースの更新

作成されたギャラリー リソースには、ある程度変更を加えることができます。 以下に制限されています。

Azure Compute Gallery:

  • 説明

イメージ定義:

  • 推奨される vCPU:
  • 推奨されるメモリ
  • 説明
  • 有効期限の終了日
  • ReleaseNotes

イメージ バージョン:

  • リージョンのレプリカ数
  • ターゲット リージョン
  • 最新から除外
  • 有効期限の終了日

共有

Azure Compute Gallery でイメージを共有する主な方法は、共有する相手に応じて 3 つあります。

共有相手: ユーザー グループ サービス プリンシパル 特定のサブスクリプション (または) テナント内のすべてのユーザー Azure のすべてのユーザーと公に
RBAC 共有 はい イエス はい いいえ いいえ
RBAC + 直接共有ギャラリー はい イエス イエス はい いいえ
RBAC + コミュニティ ギャラリー はい イエス はい いいえ はい

ACG イメージを作成するために必要な RBAC アクセス許可:

ユーザーは、仮想マシン、ディスク/スナップショット、VHD などのさまざまなソースから ACG イメージを作成できます。 このセクションでは、Azure Compute Gallery イメージの作成に必要なさまざまなユーザー アクセス許可について概要を説明します。 必要なアクセス許可を持たない ID では ACG 画像を作成できません。

  • ユーザーが ACG イメージ バージョンを作成するには、仮想マシンに対する書き込みアクセス許可が必要です。
  • Azure SDK の場合は、プロパティ properties.storageProfile.source.virtualMachineId を使います。このプロパティには、API バージョン 2023-07-03 または .NET SDK バージョン 1.4.0 (以降) が必要です
変換元の型 必要なアクセス許可
仮想マシン 書き込み
ディスク/スナップショット 書き込み
VHD 書き込み (listKeys)
管理イメージ 読み込み
ギャラリーの図 読み込み

Azure 組み込みロールRBAC アクセス許可の付与に関するその他の情報については、ドキュメントを参照してください

浅いレプリケーション

イメージ バージョンを作成するときに、開発とテストのためにレプリケーション モードを浅く設定できます。 浅いレプリケーションではイメージのコピーがスキップされるため、イメージ バージョンの準備が速くなります。 ただし、そのイメージ バージョンから多数の VM をデプロイできないことも意味します。 これは、古いマネージド イメージの動作と似ています。

浅いレプリケーションは、頻繁にはデプロイされない大規模イメージ (最大 32 TB) がある場合にも役立ちます。 ソース イメージはコピーされないため、より大きなディスクを使用できます。 ただし、多数の VM を同時にデプロイする場合にも使用できません。

浅いレプリケーションのイメージを設定するには、Azure CLI で --replication-mode Shallow を使用します。

SDK のサポート

Azure Compute Gallery の作成は、次の SDK でサポートされます。

テンプレート

Azure Compute Gallery リソースは、テンプレートを使用して作成できます。 いくつかのクイックスタート テンプレートが用意されています。

よく寄せられる質問

アクセス可能なサブスクリプション全体での Azure Compute Gallery リソースを Azure portal 上にすべて一覧表示するには、次の手順に従います。

  1. Azure Portalを開きます。
  2. ページを下にスクロールし、 [すべてのリソース] を選択します。
  3. 全リソースを一覧表示するサブスクリプションを、すべて選択します。
  4. [Azure Compute Gallery] 型のリソースを探します。

アクセス可能なサブスクリプション全体の Azure Compute Gallery リソースをすべて一覧表示するために、Azure CLI で次のコマンドを使用します。

   az account list -otsv --query "[].id" | xargs -n 1 az sig list --subscription