Azure Automationの「Start/Stop VMs during off hours」でVMの自動起動/停止を実装してみた話

# 概要
Azure Automationの機能「Start/Stop VMs during off hours」でAzure上のVMの自動起動/停止を実装してみました。
ソリューションの機能説明はこちら↓↓
参考資料：[Start/Stop VMs during off-hours の概要](https://docs.microsoft.com/ja-jp/azure/automation/automation-solution-vm-management)

## ①Azure Automationアカウントの作成
Azureの機能でVMの自動起動/停止を動かすためにはAutomationアカウントの作成が必須です。Azure Portalから簡単に作成できます。

1. ホーム画面で「Automationアカウント」を検索
![AzureAutomation作成画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/0965f56e-6ac8-c8fd-8b97-b16535c3da18.png)


1. 「新規作成」をクリック
1. リソース名など必要事項を入力して「作成」をクリック
![AzureAutomation作成画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/a4103e3d-2d2a-8357-c5ca-470994f89c2c.png)
※作成時に「Azure実行アカウントの作成」は「はい」にしておく。
実行アカウントを作成するには、作成するユーザに「所有者」か「ユーザアクセス管理者」の権限が必要なのでご注意を。

1. 通知画面に「展開に成功しました」ってメッセージが出て、一覧に作成したAutomationアカウントが表示されたら作成は完了
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/7cd3ec7f-c0b4-1690-e83e-d652d0277b98.png)


## ②Start/Stop VMs during off hoursのデプロイ
作成したAutomationアカウントからVMの自動起動/停止を実装していきます。
ソリューションのデプロイには、Automationアカウントと、Log Analyticsのワークスペースの作成が必要です。

1. 作成したAutomationアカウントを開く
1. 左ペインの「関連リソース」の「VMの開始/停止」を選択
1. 「詳細を表示して、ソリューションを有効にします」をクリック
![_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/9ec24fb8-871b-f2c6-c528-0e035c25a5fc.png)

1. ソリューションのデプロイ画面が出てくるので「作成」をクリック
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/816c4598-876d-61ad-5f01-84f6621b4dc8.png)

1. 以下の必要な項目を設定して「作成」をクリック
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/c34b3814-acba-3651-ef5c-3635908f5f21.png)
    * ワークスペース：Log Analyticsのワークスペースを指定。（デプロイ時に新規作成することも事前に作成したものを紐づけることも可能）  
    * Automationアカウント：①で作成したAutomationアカウントを指定。
    * パラメーター：自動起動/停止を設定するVMが存在するリソースグループやVMを指定できたりするんですが、ここで設定すると色々面倒上手くいかなかったので、 一旦スルーして先に進みます。

1. 成功したら通知画面に「展開に成功しました」ってメッセージが出るので、デプロイはこれで完了
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/69e33a6f-df1a-d7bc-12ce-a55d744cbdfb.png)


##③自動起動/停止のスケジュール設定
ソリューションはデプロイできたので、あとは自動起動/停止するためのパラメータとスケジュールを設定します。

1. ①で作ったAutomationアカウントの画面を開く
1. 左ペインの「共有リソース」の「変数」をクリック
1. 以下の項目を設定する
（いっぱいありますが、とりあえず3つだけ設定すれば動きます。値をクリックすれば設定画面に移動します。）  
![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/e0feec52-d63e-aed5-5765-ef876947995b.png)
    * External_Start_ResourceGroupNames：起動設定対象のVMが存在するリソースグループ名を指定
    * External_Stop_ResourceGroupNames：停止設定対象のVMが存在するリソースグループ名を指定
    * External_ExcludeVMNames：上記のリソースグループの中で自動起動/停止を**除外する**VMがある場合はVM名を指定  
（リソースグループ内すべてのVMに自動起動/停止を設定する場合は空欄でOK）

1. 左ペインの「共有リソース」の「スケジュール」をクリック
1. 以下のスケジュールを設定する（有効が「はい」になってることも確認する）
![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/31ce7c3a-730a-b202-fb29-fedef2084def.png)
    * Scheduled-StartVM：起動スケジュール
    * Scheduled-StopVM：停止スケジュール  
（それぞれタイムゾーンと起動/停止を実行したいスケジュールを指定して、「保存」をクリックする。実行する曜日を指定したい場合は「間隔」を1「週」にすると曜日指定ができるようになります。）
![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/daba5bcc-9ba4-b1ca-47f9-ca75ce0d2dd7.png)

1. 設定したスケジュールの状態が「オン」になってれば「次の実行」に記載された日時に対象VMの起動/停止が動作する
![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609611/8a313c26-1a69-f7bf-2f24-da9a6eebedd8.png)

***

と、こんな感じでスクリプトとか書けなくてもAzureの中だけで簡単にVMの自動起動/停止は実装できることがわかりました。
ちょっと設定変更してVMがたくさんあるときにタグ付けして起動/停止の順序の指定ができたり、AzureMonitorのアラートルール設定からメール通知できたりもするんですが、
疲れたのでそれはまた気が向いたときに書きます(´・ω・｀)

<br>