Logic Apps使ったAzure VMの開始(起動)、割り当て解除(停止)のスケジュール化方法

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

Azure Logic Apps(ロジックアプリ)を利用して、仮想マシン(Azure VM)の開始(起動)や割り当て解除(停止)をスケジュール化する手順です。

仮想マシンには自動シャットダウンの機能が用意されていますが、自動で開始する機能はありません。
Logic Appsには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コネクタのRecurrenceトリガーを使用して、実行スケジュールを設定します。
Azure VMコネクタのアクションを利用して、仮想マシンの開始や割り当て解除を行います。
併せて、ワークフローの実行に必要な権限をマネージドIDを使用して付与します。

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

マネージドIDを割り当て

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

マネージドID割り当て

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

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

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

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

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

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

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

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

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 Resource Managerコネクタを利用した場合

Azure Resource Managerコネクタにある、リソース操作を呼び出しのアクションを利用して、仮想マシンを起動することもできます。
Azure Resource Managerコネクタを利用した場合の、ワークフローの作成手順についてはこちらで紹介しています。

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

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

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

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

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

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

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

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

ワークフローのコピー

複製機能を使ってワークフローをコピーすることができます。
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アカウント)呼び出して実行する方法については、こちらで紹介しています。
例として仮想マシンを起動しています。

スポンサーリンク