Logic Appsを使ってAzure VM起動停止をスケジュール化
Azure Logic Apps(ロジックアプリ)を利用するとAzureリソースの操作を行う事が出来ます。
ワークフローでスケジュール化する事で定時起動や定時シャットダウンと言った事が出来ます。
今回は仮想マシン(Azure Virtual Machines(Azure VM))の起動停止のスケジュール化を例に、Logic Apps(ロジックアプリ)のリソース作成、マネージドIDの割り当て、仮想マシン(Azure VM)起動停止のワークフロー作成、動作確認までやってみました。
Logic Apps(ロジックアプリ)のリソース作成からマネージドID割り当て
Logic Appsの(ロジックアプリ)リソース作成とシステム割り当てマネージドIDの設定を行います。
Logic Apps(ロジックアプリ)のリソース作成
Logic Apps(ロジックアプリ)のリソースを作成します。
仮想マシン(Azure VM)の起動を1日1回利用する想定です。
利用頻度が少なくリソース消費量も大きくないワークフローですのでプランは従量課金を選択しています。
マネージドID割り当て
Logic Apps(ロジックアプリ)でシステム割り当てマネージドIDの設定を行います。
有効化と権限の割り当てを行います。
※今回はデフォルトロールで役割を選択しています。カスタムロールを使用する事により仮想マシンの起動停止だけに権限を制限する事も可能です。
仮想マシン(Azure VM)をスケジュール起動するワークフローを作成
スケジュールのトリガーと仮想マシン(Azure VM)を起動するアクションを作成します。
処理内容はワークフローとして規定される
Azure Logic Apps(ロジックアプリ)で行う処理内容はワークフローとして規定されます。
ワークフローの編集にはロジックアプリデザイナーを利用します。
ワークフローを開始する為のトリガーと実行内容を記載するアクションから構成されます。
開始の為のトリガーは1つですが、アクションは複数定義する事が出来ます。
スケジュール化は繰り返しトリガーを使う
ワークフローを開始する為のトリガーと実行内容を記載するアクションから構成されます。
繰り返しのトリガーを利用すると定時にロジックアプリを実行させる事が出来ます。
毎朝8時(日本時間)にワークフローを開始する設定とします。
Logic Apps(ロジックアプリ)の日時の扱いについてはこちらで纏めています。
リソース操作を呼び出しのアクション
”リソース操作を呼び出し”のアクションを利用すると、REST-APIを使ったAzureリソースの起動や停止が出来ます。
操作の指定はREST-APIと同じになります。
アクション名やクライアントAPIバージョンは公式サイトを参考にしています。
ワークフローを実行して仮想マシン(Azure VM)を起動
作成したLogic Apps(ロジックアプリ)のワークフローを実行します。
ワークフローの実行後に仮想マシン(Azure VM)の起動状態を確認します。
Logic Apps(ロジックアプリ)を使ってAzureリソースを操作した場合、アクテビティログのイベント開始者名にはLogic Apps(ロジックアプリ)名が入ります。
※動作確認はトリガーの実行で行っています。スケジュールを含めて確認を行う場合は開始時間を現在時刻より少し後の時間を設定します。
Logic Apps(ロジックアプリ)+Runbook(Automationアカウント)での仮想マシン(Azure VM)起動はこちら。
メール本文に記載した仮想マシン(Azure VM)名を取得して起動はこちら。
ーーー
Logic Apps(ロジックアプリ)を使って仮想マシン(Azure VM)をスケジュール停止
作成したLogic Apps(ロジックアプリ)は複製(コピー)する事が出来ます。
起動で作成したLogic Apps(ロジックアプリ)を複製(コピー)して、仮想マシン(Azure VM)をスケジュール停止するLogic Apps(ロジックアプリ)を作成します。
停止は毎朝8時30分にするようにしてみました。
Logic Apps(ロジックアプリ)を複製
Logic Apps(ロジックアプリ)を複製(コピー)します。
マネージドIDの再設定
ワークフローは複製(コピー)されていますが、マネージドIDの権限(ロールの割り当て)は複製(コピー)されません。
そのまま実行すると権限エラーになります。
マネージドIDのロールの割り当てを再設定します。
※今回はデフォルトロールで役割を選択しています。カスタムロールを使用する事により仮想マシンの起動停止だけに権限を制限する事も可能です。
ワークフローの修正
仮想マシン(Azure VM)を開始するLogic Apps(ロジックアプリ)のワークフローLogic Apps(ロジックアプリ)を修正します。
修正内容は開始時刻とアクションの変更になります。
実行時間は毎朝8時30分にしています。
アクションは開始から割り当て解除に変更しています。
ワークフローの修正 | |
開始時刻を変更します。 リソース操作のアクションを変更します。 REST-API(Virtual Machines – Deallocate) ※PowerOffを選択するとOSのシャットダウンのみで仮想マシン(Azure VM)自体は停止されません。(課金が継続します。) |
![]() |
ワークフローを実行して仮想マシン(Azure VM)の割り当て解除
作成したLogic Apps(ロジックアプリ)のワークフローを実行します。
ワークフローの実行後に仮想マシン(Azure VM)の停止状態を確認します。
※動作確認はトリガーの実行で行っています。スケジュールを含めて確認を行う場合は開始時間を現在時刻より少し後の時間を設定します。
仮想マシン(Azure VM)の電源状態と課金状況についてはこちら。
—-
Logic Apps(ロジックアプリ)にはAzure VMのアクションがある
Resource managerの”リソース操作を呼び出し”のアクションを利用してきましたが、実はLogic AppsにはAzure VMのアクションがあります。
Azure VMのアクションを利用するともう少し簡単に設定が出来ます。
仮想マシンの開始アクション
Azure VMでは”仮想マシンの開始”のアクションが準備されています。
仮想マシンの割り当て解除アクション
Azure VMでは”仮想マシンの割り当て解除”のアクションが準備されています。
仮想マシンの割り当て解除 | |
検索欄にAzure VMと入力します。 ※”仮想マシンの電源オフ”はOSのシャットダウンのみを行います。仮想マシン(Azure VM)の課金は継続します。 |
![]() |
仮想マシンの起動と同様に設定し保存します。 | ![]() |
スケジュール実行結果
スケジュール実行した結果を確認します。
スケジュール実行結果 | |
スケジュール実行結果を仮想マシン(Azure VM)のアクテビティログで確認します。 8時00分に開始し8時30分に割り当て解除されている事が確認出来ます。 |
![]() |
最後に
Logic Apps(ロジックアプリ)を利用したAzureリソース操作をやってみました。
今回は例として仮想マシン(Azure VM)のスケジュール起動から停止をやってみました。
1つのトリガー、1つのアクションでスケジュール実行、停止が出来る事が分かりました。
Azure VMのアクションを使うと、3つ(サブスクリプション、リソースグループ、VM名)の指定だけで設定が可能でした。
Azure Resource Managerを使った操作は仮想マシン(Azure VM)だけではなく他のAzureリソースでも利用可能です。
今後も引き続き色々試してみたいと思います。
Azure Automationアカウントを利用した仮想マシン(Azure VM)の起動停止はこちら。
Logic Apps(ロジックアプリ)+Runbook(Automationアカウント)での仮想マシン(Azure VM)起動はこちら。