チュートリアル: Azure CLI を使用して仮想マシン スケール セットのカスタム イメージを作成して使用する

スケール セットを作成するときは、VM インスタンスのデプロイ時に使用するイメージを指定します。 VM インスタンスをデプロイした後のタスクの数を減らすには、カスタム VM イメージを使用できます。 このカスタム VM イメージには、すべての必要なアプリケーション インストールまたは構成が含まれます。 スケール セットで作成されたすべての VM インスタンスは、カスタム VM イメージを使用し、アプリケーション トラフィックを処理できる状態になります。 このチュートリアルで学習する内容は次のとおりです。

  • Azure Compute Gallery を作成する
  • 特殊化されたイメージ定義を作成する
  • イメージ バージョンを作成する
  • 特殊化されたイメージからスケール セットを作成する
  • イメージ ギャラリーを共有する

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI のバージョン 2.4.0 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

概要

Azure Compute Gallery により、組織全体でカスタム イメージを簡単に共有できます。 カスタム イメージは Marketplace のイメージに似ていますが、カスタム イメージは自分で作成します。 カスタム イメージは、アプリケーションのプリロード、アプリケーションの構成、その他の OS 構成などの構成のブートストラップを実行するために使用できます。

Azure Compute Gallery を使用すると、カスタム VM イメージを他のユーザーと共有できます。 どのイメージを共有するか、どのリージョンでそのイメージを使用できるようにするか、および、だれと共有するかを選択することができます。

ソース VM の作成と構成

最初に az group create を使用してリソース グループを作成し、次に az vm create を使用して VM を作成します。 この VM は、イメージのソースとして使用されます。 次の例では、myResourceGroup という名前のリソース グループに myVM という名前の VM を作成します。

az group create --name myResourceGroup --location eastus

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image <SKU image> \
  --admin-username azureuser \
  --generate-ssh-keys

重要

VM の ID は、az vm create コマンドの出力に示されます。 このチュートリアルの後半で使用できるように、これを安全な場所にコピーします。

イメージ ギャラリーは、イメージの共有を有効にするために使用されるプライマリ リソースです。

ギャラリー名で許可されている文字は、英字 (大文字または小文字)、数字、ドット、およびピリオドです。 ギャラリー名にダッシュを含めることはできません。 ギャラリー名は、お使いのサブスクリプション内で一意にする必要があります。

az sig create を使用してイメージ ギャラリーを作成します。 次の例では、myGalleryRG という名前のリソース グループを "米国東部" に作成し、myGallery という名前のギャラリーを作成します。

az group create --name myGalleryRG --location eastus
az sig create --resource-group myGalleryRG --gallery-name myGallery

イメージ定義を作成する

イメージ定義では、イメージの論理グループを作成します。 これは、その中に作成されるイメージ バージョンに関する情報を管理するために使用されます。

イメージ定義名は、大文字または小文字、数字、ドット、ダッシュおよびピリオドで構成できます。

イメージ定義の種類が適切であることを確認します。 (Windows の場合は Sysprep、Linux の場合は waagent -deprovision を使用して) VM を一般化している場合は、--os-state generalized を使用して、一般化されたイメージ定義を作成する必要があります。 既存のユーザー アカウントを削除せずに VM を使用する場合は、--os-state specialized を使用して、特殊化されたイメージ定義を作成します。

イメージ定義に指定できる値の詳細については、イメージ定義に関するページを参照してください。

az sig image-definition create を使用して、ギャラリー内にイメージ定義を作成します。

この例では、イメージ定義は myImageDefinition という名前で、特殊化された Linux OS イメージ用です。 Windows OS を使用してイメージの定義を作成するには、--os-type Windows を使用します。

az sig image-definition create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --publisher myPublisher \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized

重要

イメージ定義の ID は、コマンドの出力に示されます。 このチュートリアルの後半で使用できるように、これを安全な場所にコピーします。

イメージ バージョンの作成

az image gallery create-image-version を使用して、VM からイメージ バージョンを作成します。

イメージ バージョンで許可されている文字は、数字とピリオドです。 数字は、32 ビット整数の範囲内になっている必要があります。 形式:MajorVersion.MinorVersion.Patch

この例では、イメージのバージョンは 1.0.0 であり、"米国中南部" リージョンに 1 個のレプリカ、および "米国東部 2" リージョンに 1 個のレプリカを作成しています。 レプリケーション リージョンには、ソース VM が配置されているリージョンが含まれている必要があります。

この例の --managed-image の値を、前の手順の VM の ID で置き換えます。

az sig image-version create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --managed-image "/subscriptions/<Subscription ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"

Note

同じマネージド イメージを使用して別のイメージ バージョンを作成する前に、そのイメージ バージョンが構築とレプリケーションを完全に完了するまで待つ必要があります。

また、イメージ バージョンを作成するときに、--storage-account-type premium_lrs を追加してイメージを Premium ストレージに格納することも、--storage-account-type standard_zrs を追加してゾーン冗長ストレージに格納することもできます。

イメージからスケール セットを作成する

重要

2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft Community Hub」を参照してください

az vmss create を使用して、特殊化されたイメージからスケール セットを作成します。

イメージが特殊化されたイメージであることを示す --specialized パラメーターを使用した az vmss create を使用して、スケール セットを作成します。

--image にイメージ定義 ID を使用して、使用可能なイメージの最新バージョンからスケール セット インスタンスを作成します。 また、--image にイメージ バージョン ID を指定して、特定のバージョンからスケール セット インスタンスを作成することもできます。

前に作成した myImageDefinition イメージの最新バージョンから myScaleSet という名前のスケール セットを作成します。

az group create --name myResourceGroup --location eastus
az vmss create \
   --resource-group myResourceGroup \
   --name myScaleSet \
   --orchestration-mode flexible \
   --image "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition" \
   --specialized

すべてのスケール セットのリソースと VM を作成および構成するのに数分かかります。

Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、サブスクリプション全体でイメージを共有できます。 イメージは、ギャラリー、イメージ定義、またはイメージ バージョンで共有できます。 イメージ バージョンへの読み取りアクセス許可があるユーザーは、サブスクリプション間でも、そのイメージ バージョンを使用して VM をデプロイできます。

他のユーザーとは、ギャラリー レベルで共有することをお勧めします。 ギャラリーのオブジェクト ID を取得するには、az sig show を使用します。

az sig show \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --query id

電子メール アドレスおよび az role assignment create と共に、オブジェクト ID をスコープとして使用して、ユーザーに共有イメージ ギャラリーへのアクセスを付与します。 <email-address><gallery iD> は、実際の情報に置き換えてください。

az role assignment create \
   --role "Reader" \
   --assignee <email address> \
   --scope <gallery ID>

Azure RBAC を使用してリソースを共有する方法の詳細については、「Azure CLI を使用して Azure ロールの割り当てを追加または削除する」をご覧ください。

リソースをクリーンアップする

スケール セットと追加のリソースを削除するには、az group delete を使用して、リソース グループとそのすべてのリソースを削除します。 --no-wait パラメーターは、操作の完了を待たずにプロンプトに制御を戻します。 --yes パラメーターは、追加のプロンプトを表示せずにリソースの削除を確定します。

az group delete --name myResourceGroup --no-wait --yes

次のステップ

このチュートリアルでは、Azure CLI を使用してスケール セットにカスタム VM イメージを作成して使用する方法について学習しました。

  • Azure Compute Gallery を作成する
  • 特殊化されたイメージ定義を作成する
  • イメージ バージョンを作成する
  • 特殊化されたイメージからスケール セットを作成する
  • イメージ ギャラリーを共有する

次のチュートリアルに進み、アプリケーションをスケール セットにデプロイする方法を学習してください。