Start/Stop VMs v2 のご紹介
Start/Stop VMs v2 は、複数のサブスクリプションにわたって Azure 仮想マシン (VM) を開始または停止できる、複数の Azure サービスからなるソリューションです。
本記事では、 Start/Stop VMs v2 を作成し、スケジュールに従って VM を起動または停止する方法をご紹介します。
なお、本記事においては、 Start/Stop VMs v2 の基本的な使い方をご紹介し、すべての機能をご紹介するわけではございませんので予めご了承ください。
Start/Stop VMs v2 は、以下の Azure サービスで構成されます。
| Azure リソース | 機能 |
|---|---|
| Function App | スケジュールや使用状況に応じて、 VM の起動と停止を行います。 |
| Logic App | スケジュールの設定と VM に作用するペイロードを設定します。 |
| Application Insights | 実行された操作のテレメトリをログに記録します。 |
| Dashboard | Application Insights で収集したログをビューとしてカスタムできます。 |
| Storage | 実行されたトランザクションをテーブルに記録、キューを使用してオペレーションオブジェクトを保存します。 |
| Monitor | VM の状態が変化した際にアラートやメール通知を行います。 |
Start/Stop VMs v2 は、 Azure Automation で使用できる以前のバージョンと同じ機能をすべて提供しますが、より新しい Azure のテクノロジを活用するように設計されています。
Start/Stop VMs v2 を作成し、スケジュールに従って VM を起動/停止する方法
本記事で紹介する環境は、検証のために作成したものとなりますので、活用の際にはお客様の要件に合わせて十分なテスト・検証の上ご利用いただきますようお願い申し上げます。
1. Start/Stop VMs v2 を作成する
Azure ポータルの [リソースの作成] を利用して、 Function App や Logic App を含む、複数の Azure サービスからなるリソースグループを新規作成します。
1-1. Azure ポータルを開き、 [リソースの作成] をクリックします。

1-2. 検索ボックスに [Start/Stop] と入力し、 Start/Stop VMs during off hours - V2 を選択、作成します。


1-3. 各種リソース名等を入力し、 [作成] をクリックしてリソース群を作成します。


1-4. [サブスクリプションに移動] を選択すると、作成されたリソースを確認できます。

2. (Options) サブスクリプションに対してロールを割り当てる
Start/Stop VMs v2 では、作成された Function App が VM の起動/停止を行うため、該当 Function App に対して、VM が属するサブスクリプションにロールを割り当てる必要があります。
Start/Stop VMs v2 を作成すると、作成された Function App に対してシステム割り当てマネージド ID が構成され、サブスクリプションに対する共同作成者ロールが付与されますが、 Start/Stop VMs v2 を作成したサブスクリプションとは異なるサブスクリプション上に存在する VM を自動起動/停止したいといった場合には、それらの VM が属するサブスクリプションに対する協同作成者ロールを付与する必要がございます。詳細については下記ドキュメントをご参照ください。
複数のサブスクリプションを有効にする - Start/Stop VMs v2 を Azure サブスクリプションにデプロイする
3. スケジュールを構成する
VM の起動/停止を制御するには、要件に基づいて、 1-4 で作成された Logic App を 1 つ以上構成します。 Start/Stop VMs v2 では、 VM を起動/停止するトリガーが 3 種類あります。
| トリガー種類 | 機能 |
|---|---|
| Scheduled | 指定したスケジュールに基づいて、 VM を起動/停止します。 Azure Resource Manager とクラシック VM の両方に対して実行できます。 |
| Sequenced | 事前に定義されたシーケンス処理タグの付いた VM に対して順番に起動/停止を行います。 Azure Resource Manager の VM のみがサポートされ、クラシック VM では実行できません。 |
| AutoStop | CPU 使用率に基づき、 VM の停止を行います。 Azure Resource Manager とクラシック VM の両方に対して実行できます。 |
ここでは、スケジュールに基づいて VM を起動する方法をご紹介します。
3-1. 作成された Logic App の一覧から [ststv2_vms_Scheduled_start] を選択し、 [ロジック アプリ コードビュー] に移動します。 body オブジェクトで起動/停止したいターゲットを設定します。
ここでは、 rgvm というリソースグループに属する Azure Resource Manager VM すべてを起動するために、デフォルトで ResourceGroups に記述されている "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/rg1/" を削除し、"/subscriptions/12345678-1234-1234-1234-123456789012(該当サブスクリプションIDに変更してください)/resourceGroups/rgvm/" を追加しています。コードの編集が完了したら、 [保存] をクリックします。

起動/停止する VM のスコープとして、サブスクリプション、リソースグループ、VM の3種類が用意されています。 RequestScopes を以下のフォーマットに従って記述することで、複数の VM を指定できます。
| Key | Value (例) |
|---|---|
| Subscriptions | /subscriptions/12345678-1234-5678-1234-123456781234/ |
| ResourceGroups | /subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/ |
| VMLists | /subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1 |
| ExcludedVMLists | /subscriptions/12345678-1111-2222-3333-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1 |
ExcludedVMLists で指定した仮想マシンを対象から除外することができます。例えば、リソースグループ rg1 の VM vm1 以外の VM すべてを起動したい場合は以下のように記述します。 ExcludedVMLists は、 VMLists とは併用できませんのでご注意ください。
{
"body": {
"Action": "start",
"RequestScopes": [
"/subscriptions/12345678-1234-5678-1234-123456781234/resourceGroups/rg1/"
],
"ExcludedVMLists": [
"/subscriptions/12345678-1111-2222-3333-123456781234/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/vm1"
]
}
}
3-2. [ロジック アプリ デザイナー] に移動し、 [Recurrence] をクリックし、スケジュールを設定します。ここでは、毎時 0 分と 30 分に スケジュールされるよう設定します。
繰り返しオプションについては、以下のドキュメントで詳細に記載されておりますので、ご参照ください。
| [Azure Logic Apps で繰り返しトリガーを使用して繰り返しタスクおよびワークフローを作成、スケジュール設定、および実行する | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/connectors/connectors-native-recurrence#add-the-recurrence-trigger) |

3-3. [概要] に移動し、 [有効] をクリックしてスケジュールを有効化します。

3-4. 以上で、 Start/Stop VMs V2 を作成し、スケジュールに基づいて VM を起動/停止することができました。 [最新の情報に更新] をクリックし、 [実行の履歴] から実行履歴を確認できます。また、該当 VM の [アクティビティ ログ] に移動すると、 “Start Virtual Machine” の状態が成功になっていることから、 VM の起動が成功していることが確認できます。


参考ドキュメント
- Start/Stop VMs v2 の概要
- Start/Stop VMs v2 を Azure サブスクリプションにデプロイする
- Start/Stop VMs v2 を管理する方法
- VM の開始/停止に関する一般的な問題のトラブルシューティング
- Azure portal でロジック アプリを管理する
2023 年 06 月 05 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。