仮想マシン スケール セットにアプリケーションをデプロイする

注意

このドキュメントでは、均一オーケストレーション モードで実行される Virtual Machine Scale Sets について説明します。 新しいワークロードにはフレキシブル オーケストレーションを使用することをお勧めします。 詳細については、「Azure での Virtual Machine Scale Sets のオーケストレーション モード」を参照してください。

スケール セット内の仮想マシン (VM) インスタンスでアプリケーションを実行する には、まず、アプリケーション コンポーネントと必要なファイルをインストールする必要があります。 この記事では、スケール セット内のインスタンス用にカスタム VM イメージを構築する、または既存の VM インスタンスにインストール スクリプトを自動的に実行する方法について説明します。 また、スケール セットのアプリケーションまたは OS 更新プログラムを管理する方法についても説明します。

カスタム VM イメージの構築

Azure プラットフォーム イメージの 1 つを使用してスケール セット内にインスタンスを作成するために、追加のソフトウェアをインストールしたり構成する必要はありません。 これらのコンポーネントのインストールは自動化できますが、スケール セットへ VM インスタンスをプロビジョニングするには時間がかかります。 VM インスタンスに多くの構成変更を適用する場合は、これらの構成スクリプトとタスクを実行するための管理オーバーヘッドが必要になります。

スケール セットにインスタンスがプロビジョニングされると同時にアプリケーションを実行できるカスタム VM イメージを構築すれば、構成管理と VM のプロビジョニングにかかる時間を短縮できます。 スケール セットでカスタム VM イメージを作成し、使用する方法については、次のチュートリアルをご覧ください。

カスタム スクリプト拡張機能を使用してアプリケーションをインストールする

カスタム スクリプト拡張機能は、Azure VM でスクリプトをダウンロードし、実行します。 この拡張機能は、デプロイ後の構成、ソフトウェアのインストール、その他の構成や管理タスクに役立ちます。 スクリプトは、Azure ストレージや GitHub からダウンロードできます。また、拡張機能の実行時に Azure Portal に提供することもできます。 カスタム スクリプト拡張機能を使用してアプリをインストールする方法の詳細については、次のチュートリアルを参照してください。

PowerShell DSC を使用して Windows VM にアプリをインストールする

PowerShell Desired State Configuration (DSC) は、ターゲット マシンの構成を定義するための管理プラットフォームです。 DSC 構成では、マシンにインストールするものと、ホストを構成する方法を定義します。 Local Configuration Manager (LCM) エンジンは、プッシュされた構成に基づいて要求されたアクションを処理する各ターゲット ノードで実行されます。

PowerShell DSC 拡張機能を使用すると、PowerShell を使用してスケール セット内の VM インスタンスをカスタマイズできます。 次に例を示します。

myResourceGroup という名前のリソース グループ内の myScaleSet VM インスタンスに DSC 拡張機能が適用されます。 独自の名前を次のように入力します。

# Define the script for your Desired Configuration to download and run
$dscConfig = @{
  "wmfVersion" = "latest";
  "configuration" = @{
    "url" = "https://github.com/Azure-Samples/compute-automation-configurations/raw/master/dsc.zip";
    "script" = "configure-http.ps1";
    "function" = "WebsiteTest";
  };
}

# Get information about the scale set
$vmss = Get-AzVmss `
                -ResourceGroupName "myResourceGroup" `
                -VMScaleSetName "myScaleSet"

# Add the Desired State Configuration extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
    -VirtualMachineScaleSet $vmss `
    -Publisher Microsoft.Powershell `
    -Type DSC `
    -TypeHandlerVersion 2.24 `
    -Name "DSC" `
    -Setting $dscConfig

# Update the scale set and apply the Desired State Configuration extension to the VM instances
Update-AzVmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet"  `
    -VirtualMachineScaleSet $vmss

スケール セットのアップグレード ポリシーが手動の場合は、Update-AzVmssInstance を使用して VM インスタンスを更新します。 このコマンドレットは、更新されたスケール セットの構成をVM インスタンスに適用し、アプリケーションをインストールします。

cloud-init を使用して Linux VM にアプリをインストールする

cloud-Init は、Linux VM を初回起動時にカスタマイズするために広く使用されているアプローチです。 cloud-init を使って、パッケージをインストールしてファイルを書き込んだり、ユーザーとセキュリティを構成したりすることができます。 初回起動処理中に cloud-init が実行されるので、構成を適用するために追加の手順や必要なエージェントはありません。

cloud-init はディストリビューション全体でも有効です。 たとえば、パッケージをインストールするときに apt-get installyum install は使用しません。 代わりに、cloud-init ではインストールするパッケージの一覧をユーザーが定義できます。 cloud-init によって、選択したディストリビューションに対してネイティブのパッケージ管理ツールが自動的に使用されます。

詳細については、cloud-init.txt ファイルの例を含む「Use cloud-init to customize Azure VMs」(cloud-init を使用して Azure VM をカスタマイズする) を参照してください。

スケール セットを作成して cloud-init ファイルを使用するには、az vmss create コマンドに --custom-data パラメーターを追加し、cloud-init ファイルの名前を指定します。 次の例では、myScaleSet という名前のスケール セットを myResourceGroup に作成し、cloud-init.txt という名前のファイルを使用して VM インスタンスを構成します。 独自の名前を次のように入力します。

重要

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

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  -–orchestration-mode uniform \
  --upgrade-policy-mode automatic \
  --custom-data cloud-init.txt \
  --admin-username azureuser \
  --generate-ssh-keys

OS 更新プログラムを使用してアプリケーションをインストールする

OS の新しいリリースが使用できる場合は、新しいカスタム イメージを使用または構築して、スケール セットに OS の更新プログラムを展開できます。 各 VM インスタンスは、指定した最新のイメージにアップグレードされます。 アプリケーションが事前にインストールされたカスタム イメージ、カスタム スクリプト拡張機能、または PowerShell DSC を使用して、アップグレードを実行すると同時にアプリケーションが自動的に提供されるようにできます。 このプロセスを実行する場合、アプリケーションの保守を計画して、バージョンの互換性の問題がないことを確認する必要があります。

アプリケーションが事前にインストールされているカスタム VM イメージを使用すると、アプリケーションの更新プログラムをデプロイメント パイプラインに統合して新しいイメージを構築し、スケール セット全体に OS のアップグレードを展開することができます。 この方法を使用すると、パイプラインが最新のアプリケーション ビルドを選択し、VM を作成および認証し、スケール セットの VM インスタンスをアップグレードできます。 複数のカスタム VM イメージ間にわたってアプリケーション更新プログラムを構築してデプロイするデプロイ パイプラインを実行する場合は、Packer イメージを作成し、Azure DevOps Services でデプロイすることができます。また、SpinnakerJenkins などの別のプラットフォームを使用することもできます。

次のステップ

アプリケーションを構築してスケール セットに展開します。スケール セットの設計の概要を参照してください。 スケール セットの管理方法の詳細については、PowerShell を使用してスケール セットを管理するを参照してください。