Start/Stop VMs v2 を Azure サブスクリプションにデプロイする
Start/Stop VMs v2 機能をインストールするには、この記事の手順を順番に実行します。 セットアップ プロセスが完了したら、要件に合わせてカスタマイズするスケジュールを構成します。
アクセス許可とポリシーに関する考慮事項
デプロイの前および最中に、次の考慮事項に留意してください。
このソリューションでは、Start/Stop v2 のデプロイに対する適切なロールベースのアクセス制御 (RBAC) のアクセス許可を持つユーザーが、Start/Stop VMs v2 インスタンスのスコープで仮想マシンのスケジュールを追加、削除、管理することができます。 この動作は仕様です。 実際には、仮想マシンに対する明示的なアクセス許可を持たないユーザーでも、仮想マシンを管理している Start/Stop v2 ソリューションを変更するためのアクセス許可を持っていれば、その仮想マシンに対する開始、停止、自動停止の操作を作成できます。
Start/Stop v2 ソリューションにアクセスできるすべてのユーザーが、Start/Stop v2 アプリケーションで使用される Application Insights インスタンスに保存されているコスト、節約、操作履歴、その他のデータを見ることができます。
Start/Stop v2 ソリューションを管理するときは、Start/Stop v2 ソリューションに対するユーザーのアクセス許可を考慮する必要があります (特に、ターゲット仮想マシンを直接変更するアクセス許可をユーザーが持っていない場合)。
Start/Stop v2 ソリューションを新規または既存のリソース グループにデプロイすると、StartStopV2 の値を持つ SolutionNameという名前のタグが、Start/Stop v2 によってデプロイされたリソースグループとそのリソースに追加されます。 これらのリソースのその他のタグはすべて削除されます。 リソース タグに基づいて管理操作を拒否する Azure ポリシーがある場合は、このタグのみを含むリソースの管理操作を許可する必要があります。
機能をデプロイする
デプロイは、Start/Stop VMs v2 の GitHub 組織から開始されます。 この機能は、サブスクリプション内のすべてのリソース グループにわたるすべての VM を、そのサブスクリプション内の 1 つのデプロイから管理することを目的としていますが、組織の運用モデルまたは要件に基づいて、別のインスタンスをインストールすることもできます。 また、複数のサブスクリプション全体で VM を一元的に管理するように構成することもできます。
管理と削除を簡単にするために、Start/Stop VMs v2 を専用のリソース グループにデプロイすることをお勧めします。
注意
現在、このソリューションでは、既存のストレージ アカウントまたは Application Insights リソースの指定はサポートされていません。
注意
関数アプリとストレージアカウントの名前付け形式が変更されました。 グローバルな一意性を保証するため、ランダムで一意の文字列が、これらのリソースの名前に追加されるようになりました。
ブラウザーを開いて、Start/Stop VMs v2 の GitHub 組織に移動します。
お使いの Azure VM が作成されている Azure クラウド環境に基づいて、デプロイ オプションを選択します。
メッセージが表示されたら、Azure portal にサインインします。
ドロップダウン ボックスから適切なプランを選択します。 ゾーン冗長プラン (Start/StopV2-AZ) を選択するとき、次のリージョンのいずれかでデプロイを作成する必要があります。
- オーストラリア東部
- ブラジル南部
- カナダ中部
- 米国中部
- 米国東部
- 米国東部 2
- フランス中部
- ドイツ中西部
- 東日本
- 北ヨーロッパ
- 東南アジア
- 英国南部
- 西ヨーロッパ
- 米国西部 2
- 米国西部 3
[作成] を選択します。これにより、Azure portal にカスタムの Azure Resource Manager のデプロイ ページが開きます。
次の値を入力します。
名前 値 リージョン 新しいリソース用にご自身に近いリージョンを選択します。 リソース グループ名 Start/Stop VMs 用の個々のリソースが含まれるリソース グループの名前を指定します。 Resource Group Region (リソース グループのリージョン) リソース グループのリージョンを選択します。 たとえば [米国中部] です。 Azure Function App Name (Azure Function App 名) URL パスに有効な名前を入力します。 入力した名前は、Azure Functions 内での一意性を確保するために検証されます。 Application Insights Name (Application Insights 名) Start/Stop VMs の分析を保持する Application Insights インスタンスの名前を指定します。 Application Insights Region (Application Insights のリージョン) Application Insights インスタンスのリージョンを指定します。 ストレージ アカウント名 Start/Stop VMs の実行テレメトリを格納する Azure Storage アカウントの名前を指定します。 電子メール アドレス 状態の通知を受信する 1 つ以上の電子メール アドレスをコンマ (,) で区切って指定します。 ページ下部の [確認および作成] を選択します。
[作成] を選択してデプロイを開始します。
画面の上部にあるベルのアイコン (通知) を選択して、デプロイの状態を確認します。 "デプロイを実行しています" と表示されます。 デプロイが完了するまでお待ちください。
通知ウィンドウで [リソース グループに移動] を選択します。 次のような画面が表示されます。
注意
お客様がトラブルシューティングのためにサポート チームに連絡してきたときにより良く支援できるよう、運用およびハートビートのテレメトリが収集されています。 また、サービスの有効性を判断できるよう、仮想マシンでサービスが動作した時間と、仮想マシンが再通知された期間を確認するため、仮想マシンのイベント履歴も収集されています。
複数のサブスクリプションを有効にする
Start/Stop のデプロイが完了したら、次の手順を実行して、Start/Stop VMs v2 で複数のサブスクリプションに対してアクションを実行できるようにします。
デプロイ中に指定した Azure Function App 名の値をコピーします。
Azure portal で第 2 のサブスクリプションに移動します。
[アクセス制御 (IAM)] を選択します。
[追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。
次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
設定 値 Role 共同作成者 アクセスの割り当て先 ユーザー、グループ、またはサービス プリンシパル メンバー <Azure Function App 名>
スケジュールの構成の概要
VM の起動と停止を制御するためのオートメーションの方法を管理するには、要件に基づいて、含まれているロジック アプリを 1 つ以上構成します。
Scheduled - 開始と停止のアクションは、Azure Resource Manager とクラシックの VM に対して指定したスケジュールに基づきます。 ststv2_vms_Scheduled_start と ststv2_vms_Scheduled_stop により、スケジュール設定された開始と停止が構成されます。
Sequenced - 開始と停止のアクションは、事前定義されたシーケンス処理タグの付いた VM を対象とするスケジュールに基づきます。 サポートされているのは、sequencestart および sequencestop の 2 つの名前付きタグのみです。 ststv2_vms_Sequenced_start と ststv2_vms_Sequenced_stop により、シーケンスされた開始と停止が構成されます。
注意
このシナリオでサポートされるのは、Azure Resource Manager の VM のみです。
AutoStop - この機能は、CPU 使用率に基づいて Azure Resource Manager とクラシックの両方の VM に対して停止アクションを実行するためにのみ使用されます。 また、スケジュールに基づく "アクションの実行" の場合もあります。この場合、VM に関するアラートが作成され、条件に基づいて停止アクションを実行するためのアラートがトリガーされます。ststv2_vms_AutoStop により、自動停止機能が構成されます。
追加のスケジュールが必要な場合は、Azure portal の [クローン] オプションを使用して、提供されているロジック アプリのいずれかを複製することができます。
スケジュールされた起動と停止のシナリオ
Azure Resource Manager とクラシック VM のスケジュールされた起動と停止のアクションを構成するには、次の手順を実行します。 たとえば、ststv2_vms_Scheduled_start のスケジュールを構成し、朝オフィスにいるときに起動し、ststv2_vms_Scheduled_stop のスケジュールに基づき、夕方退社するときにサブスクリプション全体のすべての VM を停止することができます。
VM を起動するだけのロジック アプリの構成はサポートされています。
シナリオごとに、アクションの対象を 1 つ以上のサブスクリプション、1 つまたは複数のリソース グループにすることができ、1 つ以上の VM を包含または除外リストに指定できます。 同じロジック アプリ内でまとめて指定することはできません。
Azure portal にサインインしてから、 [ロジック アプリ] に移動します。
スケジュールされた起動を構成する場合、ロジック アプリの一覧から [ststv2_vms_Scheduled_start] を選択します。 スケジュールされた停止を構成する場合は、 [ststv2_vms_Scheduled_stop] を選択します。
左側のウィンドウで [ロジック アプリ デザイナー] を選択します。
ロジック アプリ デザイナーが表示されたら、デザイナー ウィンドウで [繰り返し] を選択して、ロジック アプリのスケジュールを構成します。 特定の繰り返しオプションの詳細については、繰り返しタスクのスケジュールに関する記事を参照してください。
Note
最初の繰り返しの開始日時を指定しないと、ロジック アプリを保存するとすぐに繰り返しが実行されます。これにより、スケジュールされた実行の前に VM が起動または停止する可能性があります。
デザイナー ウィンドウで、 [関数] - [お試しください] を選択して、ターゲット設定を構成します。 要求本文で、サブスクリプション内のすべてのリソース グループにわたって VM を管理する場合は、次の例に示すように要求本文を変更します。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/" ] } }
次の例のように、各値をコンマで区切って
subscriptions
配列内に複数のサブスクリプションを指定します。"Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ]
要求本文で、特定のリソース グループの VM を管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、リソース グループを 1 つ以上指定できます。
この例では、仮想マシンの除外についても示しています。 VM を除外するには、VM のリソース パスを指定するかワイルドカードを使用します。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ], "ResourceGroups": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
ここでは、両方のサブスクリプションで、VM 名が Az と Bz で始まるもの以外のすべての VM に対してアクションが実行されます。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [“Az*”,“Bz*”], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ] } }
要求本文で、サブスクリプション内の特定の VM セットを管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、VM を 1 つ指定できます。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg3/providers/Microsoft.Compute/virtualMachines/vm2", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] } }
ロジック アプリの [概要] ウィンドウで、 [有効] を選択します。
シーケンス処理された起動と停止のシナリオ
分散アプリケーション アーキテクチャ内の複数の Azure Resource Manager VM に 2 つ以上のコンポーネントを含む環境では、コンポーネントの起動および停止順序を指定できることが重要です。 このシナリオを構成する前に、概要ページで説明されているように、sequencestart タグと Sequencestart タグをターゲット VM に適用していることを確認してください。
シーケンス処理された起動を構成する場合、ロジック アプリの一覧から [ststv2_vms_Sequenced_start] を選択します。 シーケンス処理された停止を構成する場合は、 [ststv2_vms_Sequenced_stop] を選択します。
左側のウィンドウで [ロジック アプリ デザイナー] を選択します。
ロジック アプリ デザイナーが表示されたら、デザイナー ウィンドウで [繰り返し] を選択して、ロジック アプリのスケジュールを構成します。 特定の繰り返しオプションの詳細については、繰り返しタスクのスケジュールに関する記事を参照してください。
Note
最初の繰り返しの開始日時を指定しないと、ロジック アプリを保存するとすぐに繰り返しが実行されます。これにより、スケジュールされた実行の前に VM が起動または停止する可能性があります。
デザイナー ペインで、[Function-Try] を選択してターゲット設定を構成し、上部メニューの [</> コード ビュー] ボタンを選択して、Function-Try 要素のコードを編集します。 要求本文で、サブスクリプション内のすべてのリソース グループにわたって VM を管理する場合は、次の例に示すように要求本文を変更します。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/" ] }, "Sequenced": true }
次の例のように、各値をコンマで区切って
subscriptions
配列内に複数のサブスクリプションを指定します。"Subscriptions": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ]
要求本文で、特定のリソース グループの VM を管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、リソース グループを 1 つ指定できます。
この例では、ワイルドカードを使用するスケジュールされた起動/停止の例と比較した、リソース パスによる仮想マシンの除外も示しています。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "Subscriptions":[ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/" ], "ResourceGroups": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/" ], "ExcludedVMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] }, "Sequenced": true }
要求本文で、サブスクリプション内の特定の VM セットを管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、VM を 1 つ指定できます。
{ "Action": "start", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1", "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm2", "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/rg2/providers/Microsoft.ClassicCompute/virtualMachines/vm30" ] }, "Sequenced": true }
自動停止シナリオ
Start/Stop VMs v2 は、営業時間外などの非ピーク期間中に使用されていないマシンを評価し、プロセッサ使用率が指定されたパーセンテージ未満の場合は自動的にシャットダウンすることで、サブスクリプションで実行中の Azure Resource Manager およびクラシック VM のコストを管理する上で役立ちます。
要求本文の次のメトリック アラート プロパティでは、カスタマイズがサポートされています。
- AutoStop_MetricName
- AutoStop_Condition
- AutoStop_Threshold
- AutoStop_Description
- AutoStop_Frequency
- AutoStop_Severity
- AutoStop_Threshold
- AutoStop_TimeAggregationOperator
- AutoStop_TimeWindow
Azure Monitor メトリック アラートのしくみと構成方法の詳細については、Azure Monitor のメトリック アラートに関する記事を参照してください。
自動停止を構成する場合、ロジック アプリの一覧から [ststv2_vms_AutoStop] を選択します。
左側のウィンドウで [ロジック アプリ デザイナー] を選択します。
ロジック アプリ デザイナーが表示されたら、デザイナー ウィンドウで [繰り返し] を選択して、ロジック アプリのスケジュールを構成します。 特定の繰り返しオプションの詳細については、繰り返しタスクのスケジュールに関する記事を参照してください。
デザイナー ウィンドウで、 [関数] - [お試しください] を選択して、ターゲット設定を構成します。 要求本文で、サブスクリプション内のすべてのリソース グループにわたって VM を管理する場合は、次の例に示すように要求本文を変更します。
{ "Action": "stop", "EnableClassic": false, "AutoStop_MetricName": "Percentage CPU", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "RequestScopes":{ "Subscriptions":[ "/subscriptions/12345678-1111-2222-3333-1234567891234/", "/subscriptions/12345678-2222-4444-5555-1234567891234/" ], "ExcludedVMLists":[] } }
要求本文で、特定のリソース グループの VM を管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、リソース グループを 1 つ指定できます。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "ResourceGroups": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroupsvmrg2/", "/subscriptions/12345678-2222-4444-5555-1234567891234/resourceGroups/VMHostingRG/" ] } }
要求本文で、サブスクリプション内の特定の VM セットを管理する場合は、次の例に示すように要求本文を変更します。 指定する各リソース パスは、コンマで区切る必要があります。 必要に応じて、VM を 1 つ指定できます。
{ "Action": "stop", "AutoStop_Condition": "LessThan", "AutoStop_Description": "Alert to stop the VM if the CPU % falls below the threshold", "AutoStop_Frequency": "00:05:00", "AutoStop_MetricName": "Percentage CPU", "AutoStop_Severity": "2", "AutoStop_Threshold": "5", "AutoStop_TimeAggregationOperator": "Average", "AutoStop_TimeWindow": "06:00:00", "EnableClassic": false, "RequestScopes": { "ExcludedVMLists": [], "VMLists": [ "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/rg3/providers/Microsoft.ClassicCompute/virtualMachines/Clasyvm11", "/subscriptions/12345678-1111-2222-3333-1234567891234/resourceGroups/vmrg1/providers/Microsoft.Compute/virtualMachines/vm1" ] } }
VM のタグ
また、VM 自体のタグを設定して、特定の VM を開始および停止アクションに含めたり除外したりすることもできます。 タグを追加するには、特定の VM に移動し、左側のメニューから [タグ] を選択し、ssv2excludevm
という名前のタグを追加します。 開始または停止アクションからこの VM を除外するには、この新しいタグの値を true
に設定します。 アクションに VM を含めるには、この値を false
に設定します。 これにより、ペイロード構成で ExcludedVMLists
を更新することなく、特定の VM を除外できます。
次のステップ
Start/Stop VMs v2 機能によって管理されている Azure VM の状態を監視し、その他の管理タスクを実行する方法については、Start/Stop VMs の管理に関する記事を参照してください。