Azure DevTest Labs での共有イメージ ギャラリーの構成

DevTest Labs では、Azure Compute Gallery でのイメージの格納と共有がサポートされています。 共有イメージ ギャラリーを使用すると、多数のマネージド イメージを簡単に管理し、広く利用できるようになります。 また、現在のソフトウェアを使用して標準化されたイメージをユーザーに提供する優れた方法でもあります。 特殊化されたイメージと一般化されたイメージの両方がサポートされています。 共有イメージ ギャラリーを使用すると、カスタムマネージド仮想マシン (VM) イメージの構造と編成を構築できます。

この記事では、ラボに共有イメージ ギャラリーをアタッチする方法について説明します。 ユーザーは、ラボ VM の作成時に共有場所からイメージにアクセスできます。 このアプローチの主な利点は、DevTest Labs を使用すると、ラボ間、サブスクリプション間、リージョン間で VM イメージを共有できる点です。

共有イメージ ギャラリーを探す

DevTest Labs で共有イメージ ギャラリーを使用する利点には、次のようなものがあります。

  • イメージのグローバル レプリケーションを管理する
  • イメージのバージョン管理とグループ化を適用して管理を容易にする
  • ゾーン障害に対する回復性を向上させるために可用性ゾーンをサポートしているリージョンでゾーン冗長ストレージ (ZRS) アカウントを使用して高可用性イメージにアクセスする
  • ロールベースのアクセス制御 (RBAC) を使用して、サブスクリプション間およびテナント間でイメージを共有する

共有ギャラリーを使用する場合は、次の考慮事項に注意してください。

  • ラボにアタッチできる共有イメージ ギャラリーは一度に 1 つだけです。 別のギャラリーをアタッチするには、最初に現在のギャラリーをデタッチする必要があります。
  • DevTest Labs では、アタッチされたギャラリーからイメージを選択することしかできません。 DevTest Labs では、イメージをアップロードしたり、ギャラリー内のイメージを変更したりすることはできません。
  • 共有イメージから VM を作成すると、DevTest Labs は、アタッチされたギャラリー内の最新の発行済みバージョンのイメージを使用します。 イメージに複数のバージョンがある場合は、VM の作成時に [詳細設定] で以前のバージョンを選択できます。
  • DevTest Labs は、アタッチされたギャラリー内のすべてのイメージをラボ リージョンにレプリケートしようとします。 レプリケーションができない場合もあります。 イメージから VM を作成するときに問題が発生するのを回避するには、アタッチされたギャラリー内のイメージがラボ リージョンに完全にレプリケートされていることを確認します。

共有イメージ ギャラリーの使用に関連するコストについては、「Azure Compute Gallery の料金」を参照してください。

DevTest Labs リソースに共有イメージ ギャラリーをアタッチするには、次の手順に従います。

  1. Azure portal で、共有イメージ ギャラリーをアタッチする DevTest Labs リソースに移動します。

  2. ラボの [概要] ページで、左側のメニューの [設定] セクションを展開し、[構成とポリシー] を選択します。

  3. [構成とポリシー] 画面で、左側のメニューの [仮想マシンのベース] セクションを展開し、[共有イメージ ギャラリー] を選択します。

    DevTest Labs リソースの共有イメージ ギャラリーの [アタッチ] オプションを選択する方法を示すスクリーンショット。

  4. [アタッチ] を選択して、既存の共有イメージ ギャラリーをラボに追加します。

  5. [既存のギャラリーをアタッチする] ドロップダウン リストで、ラボに追加する共有イメージ ギャラリーを選択し、[OK] を選択します。

    共有イメージ ギャラリーをラボにアタッチする方法を示すスクリーンショット。

  6. DevTest Labs によってギャラリーがラボにアタッチされたら、ギャラリー名を選択してイメージの完全な一覧を表示できます。

    ラボのアタッチされた共有ギャラリー内のすべてのイメージの一覧を表示する方法を示すスクリーンショット。

    [共有イメージ] ページが開きます。

    共有ギャラリー内のイメージの一覧を示すスクリーンショット (VM の作成に許可されているイメージを示すチェックボックス インジケーターが表示されています)。

使用可能なイメージを制御する

[すべてのイメージを仮想マシン ベースとして使用できるようにする] オプションを使用すると、ラボ ユーザーがラボ VM の作成時に使用できるイメージを制御できます。 既定では、このオプションは [はい] に設定されており、ラボ ユーザーはアタッチされたギャラリー内のすべてのイメージにアクセスできます。

ギャラリー内のイメージのアクセスを制限するには、次の手順に従います。

  1. ラボの [構成とポリシー] ページで、[仮想マシン ベース]>[共有イメージ ギャラリー] 画面に移動します。

  2. アタッチされたギャラリー名を選択して、[共有イメージ] ページを開くと、イメージの一覧が表示されます。

  3. [共有イメージ] ページで、[すべてのイメージを仮想マシン ベースとして使用できるようにする] オプションを [いいえ] に設定します。

  4. ラボ ユーザーに使用させないイメージがある場合は、そのイメージのチェックボックスを選択解除します。

  5. [保存] を選択します。

ラボに共有イメージ ギャラリーをアタッチすると、ラボ ユーザーは、新しい VM を作成するときに許可されたイメージから選択できます。

  1. ラボの [構成とポリシー] ページで、[仮想マシン ベース]>[共有イメージ ギャラリー] 画面に移動します。

  2. アタッチされたギャラリー名を選択して、[共有イメージ] ページを開くと、イメージの一覧が表示されます。

  3. 新しい VM の作成に使用するギャラリー イメージの名前をメモしておきます。

  4. ラボの [概要] ページに戻り、[追加] を選択します。

  5. [ベースを選択] ページで、新しい VM の作成に使用するギャラリー イメージを選択します。 イメージの一覧で、アタッチされた共有イメージ ギャラリーから許可されているイメージは、Azure Resource Manager (ARM) テンプレートから入手できるイメージの後に表示されます。

    アタッチされた共有イメージ ギャラリーから許可されているイメージを含む、VM インスタンスで使用可能なイメージの一覧を示すスクリーンショット。

手順に従って、選択したイメージから VM を作成します。

ラボにアタッチできる共有イメージ ギャラリーは一度に 1 つだけです。 ラボにギャラリーがアタッチされていて、別のギャラリーを使用する場合は、まず既存のギャラリーをデタッチする必要があります。 既存のギャラリーをデタッチした後、別のギャラリーをアタッチできます。

  1. ラボの [構成とポリシー] ページで、[仮想マシン ベース]>[共有イメージ ギャラリー] 画面に移動します。

  2. アタッチされているギャラリーの [その他のオプション] (...) を選択し、[デタッチ] を選択します。

    ラボから現在の共有イメージ ギャラリーをデタッチする方法を示すスクリーンショット。

[デタッチ] オプションは、アタッチされたギャラリーの [共有イメージ] ページでも使用できます。

ARM テンプレートを使用して、共有イメージ ギャラリーをラボにアタッチできます。 次の例に示すように、ギャラリーを ARM テンプレートのリソースとして追加する必要があります。

"resources": [
{
    "apiVersion": "2018-10-15-preview",
    "type": "Microsoft.DevTestLab/labs",
    "name": "mylab",
    "location": "eastus",
    "resources": [
    {
        "apiVersion":"2018-10-15-preview",
        "name":"myGallery",
        "type":"sharedGalleries",
        "properties": {
            "galleryId":"/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/mySharedGalleryRg/providers/Microsoft.Compute/galleries/mySharedGallery",
            "allowAllImages": "Enabled"
        }
    }
    ]
}

DevTest Labs GitHub リポジトリには、ARM テンプレートを使用して共有イメージ ギャラリーをアタッチするサンプル一式が用意されています。 作業を開始するには、新しいラボを作成するときに共有イメージ ギャラリーを構成します。

REST API を使用する

次のセクションでは、REST API を使用して共有イメージ ギャラリーのイメージを操作する方法の例を示します。

ラボの一覧を取得する

次の GET 呼び出しは、サブスクリプションの DevTest Labs リソースの一覧を返します。 この例では、次のパラメーターを指定します。

  • subscriptionId: DevTest Labs リソースの一覧を返すサブスクリプション ID。
  • resourceGroupName: DevTest Labs リソースを検索するリソース グループの名前。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs?api-version= 2018-10-15-preview

ラボの共有イメージ ギャラリーの一覧を取得する

次の GET 呼び出しは、ラボに関連付けられている共有イメージ ギャラリーの一覧を返します。 この例では、次のパラメーターを指定します。

  • subscriptionId: DevTest Labs リソースのサブスクリプション ID。
  • resourceGroupName: DevTest Labs リソースのリソース グループの名前。
  • labName: 関連付けられている共有イメージ ギャラリーの一覧を返す DevTest Labs リソースの名前。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries?api-version= 2018-10-15-preview

次の PUT 呼び出しでは、指定したラボの共有イメージ ギャラリーを作成または更新します。 この例では、次のパラメーターを指定します。

  • subscriptionId: DevTest Labs リソースのサブスクリプション ID。
  • resourceGroupName: DevTest Labs リソースのリソース グループの名前。
  • labName: DevTest Labs リソースの名前。
  • name: ラボ用に作成または更新する共有ギャラリーの名前。
  • galleryId: ラボ用に作成または更新する共有ギャラリーの ID。
  • allowAllImages: ギャラリー内のすべてのイメージをラボ リソースで使用できるようにするには Enabled に設定します。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries/{name}?api-version=2018-10-15-preview
Body: 
{
    "properties":{
        "galleryId": "[Shared Image Gallery resource Id]",
        "allowAllImages": "Enabled"
    }
}

次の GET 呼び出しは、ラボの指定された共有イメージ ギャラリー内のイメージの一覧を返します。 この例では、次のパラメーターを指定します。

  • subscriptionId: DevTest Labs リソースのサブスクリプション ID。
  • resourceGroupName: DevTest Labs リソースのリソース グループの名前。
  • labName: DevTest Labs リソースの名前。
  • name: イメージを一覧表示するラボに関連付けられている共有ギャラリーの名前。
GET  https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/sharedgalleries/{name}/sharedimages?api-version=2018-10-15-preview