はじめに
最近Start/Stop VMs v2を再度触る機会がありまして、少し複雑な状況でも実現できる設定方法を共有したいと思います。
コスト削減につながる内容なので、みなさんもぜひ試してみてください。
前提条件
例えば、同じリソースグループに3台のVMがあり、起動停止時間と曜日がバラバラになっている状況だとします。
サーバーA、サーバーBの起動時間が6時で、サーバーAは平日のみ稼働、サーバーBは毎日稼働(週末を含む)
サーバーCの起動時間が9時で平日のみ稼働
使用リソース
Start/Stop VMs v2をデプロイ後、ロジックアプリデザイナーのみで設定し、ロジックアプリコードビューは設定しません。
※ロジックアプリデザイナーを設定すると、自動的にロジックアプリコードビューに反映する為。
概要図と流れ
実際の設定方法説明の前に概要図をご覧になると理解しやすいです。
Switch、Case、Scheduledを追加する方法と、各設定方法は構成図以降で説明します。
サーバーCについては平日のみ稼働となりますので、月曜日~金曜日まで起動/停止用のScheduledを追加し、土曜日と日曜日のCase配下には何も追加しません。
流れ
構成図をご覧になるとわかると思いますが、流れとしては以下となります。
①Recurrenceで起動時間と曜日を指定
②Switch1で実行時の日本時間を取得
③Case1でサーバー起動時間を指定し、実行時間と一致するCaseが実行される
④Switch2で実行時の曜日を取得
⑤取得した曜日と一致するCaseが実行される
⑥実行されるCaseの配下にあるScheduledが実行され、VMが起動
Switch追加方法
①「ロジックアプリデザイナー」で「+」をクリック
②「並列分岐の追加」をクリック
③検索バーに「Switch」を入力し、表示された「Switch」をクリック
④追加された「Switch」をクリック
⑤「fx」のマークをクリックして関数を追加
⑥以下内容を状況に応じて追加
・実行時の日本時間取得時:
convertFromUtc(UtcNow(), 'Tokyo Standard Time', 'HH:mm')
dayOfWeek(convertFromUtc(utcNow(), 'Tokyo Standard Time'))
Case追加方法
①「ロジックアプリデザイナー」で「+」をクリック
②時間と曜日を登録
・時間の登録方法(10時の場合):10:00
・曜日の登録方法(月曜日の場合):1
※月曜日:1、火曜日:2、水曜日:3、木曜日:4、金曜日:5、土曜日:6、日曜日:0
Scheduled追加方法
①「ロジックアプリデザイナー」で「+」を追加
②検索バーに「Function-try」を入力し、表示された「Choose an Azure Function」をクリック
③同じリソースグループにあるfunctionが表示されたらクリック
④末尾が「scheduled」になっているリソースをクリック後、「Add action」をクリック
⑤追加されたScheduledをクリックし、「Request Body」にVMを起動するコードを登録
※「”/subscriptions/c82cxxxx-0exx-4xxx-8xxx-e20xxe2b4xxb/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/test-vm01″」の部分はVMのリソースIDとなります。
複数のVMを起動時にはカンマで区切って登録してください。
{
"Action": "start",
"EnableClassic": false,
"RequestScopes": {
"VMLists": [
"/subscriptions/c82cxxxx-0exx-4xxx-8xxx-e20xxe2b4xxb/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/test-vm01",
"/subscriptions/c82cxxxx-0exx-4xxx-8xxx-e20xxe2b4xxb/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/test-vm02"
]
}
}
最後に
概要図を参考にして各Switch、Case、Scheduledを追加とコードを登録後、「ststv2_vms_Scheduled_start」の概要欄で「Enable」を押すと指定した時間にVMを自動起動できます。
停止の場合、「ststv2_vms_Scheduled_stop」でScheduledに登録するVM起動用コードの「start」を「stop」に変更するだけで他は全部同じです。
また、起動/停止時間を設定時に、定時起動の場合、「定時:01分」にするといいです。
よく1分前に実行されますので、そうなるとVMが起動しません。ご注意ください。
例えば09:00起動だとすると、09:01を登録
以上です。