チュートリアル: Azure CLI を使用した Virtual Machine Scale Sets へのアプリケーションのインストール
[アーティクル] 2024/10/15
15 人の共同作成者
フィードバック
この記事の内容
前提条件
Azure カスタム スクリプト拡張機能とは
カスタム スクリプト拡張機能の定義の作成
スケール セットを作成する
カスタム スクリプト拡張機能の適用
既存のスケール セット インスタンスに拡張機能を適用する
ポート 80 へのトラフィックを許可する
スケール セットのテスト
アップグレード ポリシーを変更する
アプリのデプロイの更新
リソースをクリーンアップする
次のステップ
さらに 8 個を表示
スケール セット内の仮想マシン (VM) インスタンスでアプリケーションを実行する には、まず、アプリケーション コンポーネントと必要なファイルをインストールする必要があります。 前のチュートリアルでは、カスタム VM イメージを作成および使用して VM インスタンスをデプロイする方法について学習しました。 このカスタム イメージには、手動によるアプリケーションのインストールと構成が含まれていました。 このほか、各 VM インスタンスがデプロイされた後のスケール セットへのアプリケーションのインストールを自動化したり、既にスケール セットで実行されているアプリケーションを更新したりできます。 このチュートリアルで学習する内容は次のとおりです。
スケール セットへのアプリケーションの自動インストール
Azure カスタム スクリプト拡張機能の使用
スケール セットで実行中のアプリケーションの更新
Azure サブスクリプション をお持ちでない場合は、開始する前に Azure 無料アカウント を作成してください。
この記事では、Azure CLI のバージョン 2.0.29 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
カスタム スクリプト拡張機能は、Azure VM でスクリプトをダウンロードし、実行します。 この拡張機能は、デプロイ後の構成、ソフトウェアのインストール、その他の構成や管理タスクに役立ちます。 スクリプトは、Azure ストレージや GitHub からダウンロードできます。また、拡張機能の実行時に Azure Portal に提供することもできます。
カスタム スクリプト拡張機能は Azure Resource Manager テンプレートと統合されており、Azure CLI、Azure PowerShell、Azure portal、または REST API と組み合わせて使用することもできます。 詳細については、「Windows のカスタム スクリプト拡張機能 」を参照してください。
カスタム スクリプト拡張機能を Azure CLI で使用するには、取得するファイルと実行するコマンドが定義された JSON ファイルを作成します。 これらの JSON 定義は、一貫したアプリケーション インストールを適用するためにスケール セット デプロイメント全体で再利用することができます。
カスタム スクリプト拡張機能が動作していることを確認するには、NGINX Web サーバーをインストールしてスケール セット VM インスタンスのホスト名を出力する機能を備えたスケール セットを作成します。 次のカスタム スクリプト拡張機能の定義によって、GitHub からサンプル スクリプトがダウンロードされ、必要なパッケージがインストールされた後、VM インスタンスのホスト名が基本的な HTML ページに書き込まれます。
現在のシェルで、customConfig.json というファイルを作成し、次の構成を貼り付けます。 たとえば、ローカル コンピューター上にない Cloud Shell でファイルを作成します。 任意のエディターを使用することができます。 このチュートリアルでは、Vi を使用します。 Cloud Shell で vi
を入力します。 次の JSON をエディターに貼り付け、「:w customConfig.json
」と入力します。
{
"fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
"commandToExecute": './automate_nginx.sh'
}
注意
以下の --settings パラメーターで (customConfig.json ファイルを参照するのではなく) JSON を直接参照する場合は、JSON ブロック内で単一引用符 (') と二重引用符 (") の使用を逆にする必要がある場合があります。
az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --location eastus
ここでは、az vmss create を使用して仮想マシン スケール セットを作成します。 次の例では、myScaleSet という名前のスケール セットを作成し、存在しない場合は SSH キーを生成します。
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image Ubuntu2204 \
--orchestration-mode Flexible \
--admin-username azureuser \
--generate-ssh-keys
すべてのスケール セットのリソースと VM を作成および構成するのに数分かかります。
az vmss 拡張機能セット を使用して、カスタム スクリプト拡張機能構成をスケール セット内の VM インスタンスに適用します。 次の例では、customConfig.json 構成を myResourceGroup という名前のリソース グループ内の myScaleSet VM インスタンスに適用します。
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroup \
--vmss-name myScaleSet \
--settings customConfig.json
注意事項
ファイル名の大文字と小文字は区別されます。 エラーを回避するには、これらの手順に記載されている正確なファイル名を使います。
既存のスケール セット インスタンスに拡張機能を適用する
すべてのインスタンスをアップグレードして、カスタム スクリプトを適用します。 アップグレードには数分かかることがあります。
az vmss update-instances --resource-group myResourceGroup --name myScaleSet --instance-ids "*"
トラフィックがロード バランサーを経由して仮想マシンに流れるようにするには、既定のネットワーク セキュリティ グループを更新する必要があります。
az network nsg rule create --name AllowHTTP --resource-group myResourceGroup --nsg-name myScaleSetNSG --access Allow --priority 1010 --destination-port-ranges 80
Web サーバーが動いていることを確認するには、az network public-ip show でロード バランサーのパブリック IP アドレスを取得します。 次の例では、スケール セットの一部として作成された myScaleSetLBPublicIP の IP アドレスを取得します。
az network public-ip show \
--resource-group myResourceGroup \
--name myScaleSetLBPublicIP \
--query [ipAddress] \
--output tsv
ロード バランサーのパブリック IP アドレスを Web ブラウザーに入力します。 ロード バランサーは、次の例に示すように、VM インスタンスのいずれかにトラフィックを配分します。
次の手順で更新されたバージョンを確認できるように、Web ブラウザーを開いたままにしておきます。
前のセクションでは、更新されたアプリケーションをすべてのスケール セット インスタンスに適用するために、手動アップグレードが必要でした。 既存のすべてのスケール セット インスタンスに更新を自動的に適用できるようにするには、アップグレード ポリシーを手動から自動に更新します。 アップグレード ポリシーの詳細については、「Virtual Machine Scale Sets のアップグレード ポリシー 」を参照してください。
az vmss update \
--name myScaleSet \
--resource-group myResourceGroup \
--set upgradePolicy.mode=automatic
現在のシェルで、customConfigv2.json というファイルを作成し、次の構成を貼り付けます。 この定義では、アプリケーションのインストール スクリプトの更新された v2 バージョンを実行します。
{
"fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
"commandToExecute": "./automate_nginx_v2.sh"
}
az vmss extension set を使って、もう一度カスタム スクリプト拡張機能構成をスケール セットに適用します。 customConfigv2.json は、アプリケーションの更新されたバージョンを適用するために使用されています。
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroup \
--vmss-name myScaleSet \
--settings @customConfigv2.json
現在はスケール セットで自動アップグレード ポリシーが使われているため、更新されたアプリケーションは自動的に既存のスケール セット インスタンスに適用されます。 Web ブラウザーを最新の情報に更新して、更新されたアプリケーションを表示します。
スケール セットと追加のリソースを削除するには、az group delete を使用して、リソース グループとそのすべてのリソースを削除します。 --no-wait
パラメーターは、操作の完了を待たずにプロンプトに制御を戻します。 --yes
パラメーターは、追加のプロンプトを表示せずにリソースの削除を確定します。
az group delete --name myResourceGroup --no-wait --yes
このチュートリアルでは、Azure CLI を使用して自動的にアプリケーションをスケール セットにインストールし、更新する方法について学習しました。
スケール セットへのアプリケーションの自動インストール
Azure カスタム スクリプト拡張機能の使用
スケール セットで実行中のアプリケーションの更新
次のチュートリアルに進み、スケール セットを自動的にスケーリングする方法を学習してください。