Logic Apps使ってAzure VMの開始、割り当て解除をスケジュール化する方法

2021-03-21Azure,Logic Apps,Virtual Machine

Azure Logic Apps(ロジックアプリ)を使った、仮想マシン(Azure VM)の開始、割り当て解除のスケジュール化手順です。

仮想マシンに自動シャットダウンのメニューはありますが自動で開始するメニューはありません。
Logic AppsにはAzure VMのコネクタが用意されています。
Azure VMのコネクタには開始、電源オフ、割り当て解除などの操作が含まれています。

スケジュール実行のトリガーと組み合わせて、仮想マシンを定時に開始、割り当て解除するワークフローを作成します。

※本記事内ではAzure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事内ではロジックアプリ(Azure Logic Apps)をLogic Appsとして表記しています。
※従量課金(マルチテナント)のLogic Appsリソースを利用しています。

スポンサーリンク

仮想マシンを開始、割り当て解除するワークフロー作成から実行まで

仮想マシンの操作用にAzure VMのコネクタ用意されている

Logic AppsにはAzure VMのコネクタが用意されています。

Azure VM

仮想マシンや仮想マシンスケールセット(VMSS)のリソースに対応しています。
起動、電源オフ(停止)、割り当て解除などの操作を実行できます。
従量課金(シングルテナント)、Standard(マルチテナント)どちらのプランでも利用できます。

Azure VMのコネクタ
Azure VMのコネクタです。
仮想マシンや仮想マシンスケールセットに対するアクションが用意されている事がわかります。
Logic AppsのAzure VMコネクタの画面(アクション一覧)

ワークフロー

ScheduleコネクタのRecurenceトリガーで実行するスケジュールを設定します。
Azure VMコネクタのアクションで仮想マシンを開始、割り当て解除します。
併せてワークフロー実行にあたって必要な権限付与をマネージドIDで実施します。

Logic Appsのリソース作成手順についてはこちらに記載しています。
今回は従量課金(マルチテナント)のプランで作成しています。
トリガーやアクションの概要についてもこちらで紹介しています。

マネージドID割り当て

ワークフロー実行時に仮想マシンの操作します。
ワークフローから操作に必要な権限を割り当てます。
今回はシステム割り当てマネージドIDを利用します。
リソースグループに対して仮想マシンの共同作成者を割り当てています。

マネージドID割り当て

左側のメニューでIDを選択します。
システム割り当て済みタブを選択します。
状態をオンにして保存を選択します。

Logic AppsのIDのメニュー画面(システム割り当てマネージドIDを有効化)
マネージドIDにロールを割り当てます。
Azureロールの割り当てを選択します。
Logic AppsのIDのメニュー画面(Azure ロールの割り当て)
ロールの割り当ての追加を選択します。
スコープに対して役割を割り当てます。
今回は仮想マシン共同作成者を割り当てています。
Azure ロールの割り当て追加画面(仮想マシン共同作成者を割り当て)

※デフォルトロールから役割を選択しています。

スケジュール実行のトリガーを作成

ScheduleコネクタのRecurenceトリガーで実行するスケジュールを設定します。
Recurenceトリガーを利用して毎日定時にワークフローを実行できます。
毎日9時30分(日本時間)にワークフローを開始する設定とします。

スケジュール設定
ロジックアプリデザイナーを選択するとトリガーが表示されます。
Scheduleコネクタを選択します。
Recurenceのトリガーを選択します。
scheduleコネクタを選択(ロジックアプリデザイナー画面)
scheduleコネクタでRecurrenceのトリガーを選択

Frequencyが頻度の設定になります。日を選択します。
毎日実行の場合はIntervalは1を設定します。

  • Time Zone
  • At These Hours(設定時刻(時間))
  • At These Miniutes(設定時刻(分))

Recurrenceトリガーで実行スケジュールを設定

Logic Appsの日時の扱いについてはこちらで纏めています。

仮想マシン開始のアクションを作成

Azure VMコネクタには"仮想マシンの開始"のアクションが用意されています。
Azure VMコネクタ利用時は接続の作成が必要です。

※接続の認証にはシステム割り当てマネージドIDを利用しています。

仮想マシンの開始

検索欄にAzure VMと入力します。
Azure VMのコネクタが表示されます。
“さらに表示"でアクションをすべて表示します。
“仮想マシンの開始"を選択します。

 

Logic AppsのワークフローでAzure VMのコネクタを選択
Azure VMのコネクタで仮想マシン開始のアクションを選択
接続の作成が表示さます。
認証方法はマネージドID(システム割り当て)を選択します。
接続名(任意)を設定します。
作成を選択します。
Logic AppsでAzure VMのコネクタの接続を新規作成
Logic Appsの接続で利用できる認証の種類
システム割り当てマネージドIDを利用してAzure VMのコネクタの接続を作成

仮想マシンの開始の設定です。
起動対象の仮想マシンを選択します。

  • サブスクリプション
  • リソースグループ
  • 仮想マシン

※すべてプルダウンで選択可能です。

仮想マシン開始のアクションを作成(Azure VMコネクタを利用)

ワークフローを保存

作成したワークフローを保存します。

ワークフローの保存

作成したワークフローを保存します。
ロジックアプリデザイナーで保存を選択します。

Azure VMコネクタを利用して仮想マシンを起動するワークフロー

ワークフローを実行して仮想マシンを開始

ワークフローを実行して仮想マシンの開始を確認します。

ワークフローを実行

実行を選択します。

ワークフローを開始する

実行履歴を確認します。
グリーンとなっており、正常に完了している事が分かります。
仮想マシンでStart Virtual Machineのアクティビティログが確認できます。
イベント開始者がLogic Appsの名前となっています。
ワークフローにより仮想マシンが開始された事が確認できます。

ワークフローの実行結果(仮想マシンを起動)
ワークフローを利用して仮想マシンを開始したアクティビティログ

仮想マシン割り当て解除の場合のワークフロー

仮想マシンを割り当て解除する場合のワークフローです。
Azure VMコネクタには”仮想マシンの割り当て解除”のアクションが用意されています。
トリガーは仮想マシン開始時のワークフローと同様にRecurenceトリガー(Scheduleコネクタ)を利用します。

”仮想マシンの電源オフ”のアクションもあります。
このアクションのを利用した場合は、OSのシャットダウンのみを行います。
電源オフの場合は割り当て解除はされず仮想マシンの課金は継続します。

仮想マシンの状態と課金の関係についてはこちらで紹介しています。

※接続の認証にはシステム割り当てマネージドIDを利用しています。

仮想マシンの割り当て解除

”仮想マシンの割り当て解除”を選択します。
停止対象の仮想マシンを選択します。

  • サブスクリプション
  • リソースグループ
  • 仮想マシン

設定が完了したらワークフローを保存します。

Azure VMのコネクタで仮想マシンの割り当て解除を選択
仮想マシンの割り当て解除アクションを設定
仮想マシンを割り当て解除するワークフロー(Logic Apps)

ワークフローを実行して仮想マシンを割り当て解除

ワークフローを実行して仮想マシンの割り当て解除を確認します。

仮想マシンの割り当て解除
実行履歴を確認します。
グリーンとなっており、正常に完了している事が分かります。
仮想マシンでDeallocate Virtual Machineのアクティビティログが確認できます。
イベント開始者がLogic Appsの名前となっています。
ワークフローにより仮想マシンが割り当て解除された事が確認できます。
ワークフローを実行して仮想マシンを割り当て解除(実行結果)
ワークフローを実行して仮想マシンの割り当て解除したアクティビティログ

仮想マシンの電源オフのアクションを利用した場合

”仮想マシンの電源オフ”のアクションを利用した場合は、OSのシャットダウンのみを行います。
電源オフの場合は割り当て解除はされず仮想マシンの課金は継続します。

仮想マシンの状態と課金の関係についてはこちらで紹介しています。

仮想マシンのステータスは取得できない

“仮想マシンを取得します"というアクションがあります。
仮想マシンのステータス(StoppedやRunningなど)は取得できません。
仮想マシンの情報のみを取得します。

平日のみワークフローを実行する

平日のみワークフローを実行する方法についてはこちらで紹介しています。
曜日判断させる事で平日のみ仮想マシンを起動させるといった事ができます。

最後に

Logic AppsでAzure VMコネクタを利用した操作を確認してみました。
仮想マシン名を指定するだけで起動停止の操作ができました。
1つのトリガー、1つのアクションだけで仮想マシンの起動、停止のスケジュール化ができます。
仮想マシンを自動起動したい場合にはとても便利じゃないかと思いました。

仮想マシンの起動停止に関しては、こういうソリューションも用意されています。
Automationアカウントに仮想マシンの起動停止のメニューが用意されていたのですが非推奨となっています。

Start/Stop VMs v2 の概要

Azure Automationアカウントを利用した、仮想マシン起動停止の方法についてはこちらで紹介しています。
PowerShellを使って仮想マシンを起動停止しています。
Automationアカウントでスケジュール実行するようにしています。

仮想マシンの起動停止を行うAzure CLIコマンドやAzure PowerShellコマンドレットについてはこちらで紹介しています。

Logic AppsワークフローからRunbook(Automationアカウント)呼び出して実行する方法についてはこちらで紹介しています。
例として仮想マシンを起動しています。

スポンサーリンク