Logic Appsを使ったAzure VM起動停止のスケジュール化

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

Azure Logic Apps(ロジックアプリ)を利用するとAzureリソースの操作を行う事が出来ます。
ワークフローでスケジュール化する事で定時起動や定時シャットダウンと言った事が出来ます。

今回は仮想マシン(Azure Virtual Machines(Azure VM))の起動停止のスケジュール化を例に、Logic Apps(ロジックアプリ)のリソース作成、マネージドIDの割り当て、Azure VM(仮想マシン)起動停止のワークフロー作成、動作確認までやってみました。

スポンサーリンク

Logic Apps(ロジックアプリ)のリソース作成からマネージドID割り当て

Logic Appsの(ロジックアプリ)リソース作成とシステム割り当てマネージドIDの設定を行います。

Logic Apps(ロジックアプリ)のリソース作成

Logic Apps(ロジックアプリ)のリソースを作成します。
仮想マシンの起動を1日1回利用する
想定です。
利用頻度が少なくリソース消費量も大きくないワークフローですのでプランは従量課金を選択しています。

Logic Apps(ロジックアプリ)リソース作成

Logic Apps(ロジックアプリ)のメニューで追加を選択します。

Azure Logic Apps(リソースデプロイ)

Logic Apps(ロジックアプリ)の作成画面では、以下の項目を設定します。

  • リソースグループ名
  • ロジックアプリ名
  • リージョン
  • ログ分析
  • プランの種類
  • ゾーン冗長

今回利用しない為”ログ分析を有効化”はいいえを選択しています。

”確認および作成”を選択します。

※VM-Start-Stop-01という名前でLogic Appsを作成します。

Azure Logic Apps

確認画面が表示されます。
内容確認後”作成”を選択します。

Azure Logic Apps

マネージドID割り当て

Logic Apps(ロジックアプリ)でシステム割り当てマネージドIDの設定を行います。
有効化と権限の割り当てを行います。

マネージドID割り当て

Logic Apps(ロジックアプリ)でIDのリソースメニューを選択します。

リソースIDを有効化します。
状態をオンにして保存を選択します。

Azure Logic Apps(マネージドID割り当て)
マネージドIDにロールを割り当てます。
Azureロールの割り当て(アクセス許可)を選択します。
Azure Logic Apps(マネージドID割り当て)
ロールの割り当ての追加を選択します。 Azure Logic Apps(マネージドID割り当て)

ロールの割り当て内容を決定します。
今回はリソースグループに対して仮想マシンの共同作成者を割り当てます。

  • スコープ:ロールの割り当ての適用範囲
  • リソースグループ:ロールの割り当てるリソースグループ
  • 役割:ロールの割り当て内容

※権限の設定内容は実施する操作内容に合わせて選択します。今回は仮想マシン起動が出来る役割を割り当てます。

 
ロールの割り当て内容を確認します。
リソースグループに対して仮想マシン共同作成者が割り当てられています。
Azure Logic Apps(マネージドID割り当て)

※今回はデフォルトロールで役割を選択しています。カスタムロールを使用する事により仮想マシンの起動停止だけに権限を制限する事も可能です。

Azure VM(仮想マシン)をスケジュール起動するワークフローを作成

スケジュールのトリガーとAzure VM(仮想マシン)を起動するアクションを作成します。

処理内容はワークフローとして規定される

Azure Logic Apps(ロジックアプリ)で行う処理内容はワークフローとして規定されます。
ワークフローの編集にはロジックアプリデザイナーを利用します。

ワークフローを開始する為のトリガーと実行内容を記載するアクションから構成されます。
開始の為のトリガーは1つですが、アクションは複数定義する事が出来ます。

スケジュール化は繰り返しトリガーを使う

ワークフローを開始する為のトリガーと実行内容を記載するアクションから構成されます。
繰り返しのトリガーを利用すると定時にロジックアプリを実行させる事が出来ます。
毎朝8時(日本時間)にワークフローを開始する設定とします。

スケジュール設定
ロジックアプリデザイナーを選択するとトリガーが表示されます。
繰り返しを選択します。
Azure Logic Apps(スケジュール設定)

Recurenceの設定です。
Add new parameterを選択します。
タイムゾーン、設定時刻(時間)、設定時刻(分)にチェックを入れます。

Azure Logic Apps

毎朝8時(日本時間)に起動するように以下の項目を設定します。
毎日実行なので間隔は1、頻度は日を選択します。

  • タイムゾーン
  • 設定時刻(時間)
  • 設定時刻(分)

Azure Logic Apps(スケジュール設定)

Logic Apps(ロジックアプリ)の日時の扱いについてはこちらで纏めています。

リソース操作を呼び出しのアクション

”リソース操作を呼び出し”のアクションを利用すると、REST-APIを使ったAzureリソースの起動や停止が出来ます。

操作の指定はREST-APIと同じになります。
アクション名やクライアントAPIバージョンは公式サイトを参考にしています。

REST-API(Virtual Machines)

リソース操作を呼び出し

検索欄にResource managerと入力します。
”リソース操作を呼び出し”を選択します。

Azure Logic Apps(リソース操作を呼び出し)

Azureテナントへのサインインが要求されます。
マネージドIDを使用して接続するを選択します。

Azure Logic Apps(リソース操作を呼び出し)
接続名、マネージドIDを選択します。
接続名には仮想マシン起動停止(任意)、マネージドIDにはシステム割り当てマネージドIDを選択します。
作成を選択します。
Azure Logic Apps(リソース操作を呼び出し)

以下の項目を選択します。

  • サブスクリプション
  • リソースグループ
  • リソースプロバイダー
  • 短いリソースID
  • クライアントAPIバージョン
  • アクション名

リソースプロバイダー、短いリソースIDについては操作するAzureリソースのリソースIDの値を確認し設定します。

クライアントAPIバージョンは公式サイトのAPI Versionを指定します。

REST-API(Virtual Machines – Start)

Azure Logic Apps(リソース操作を呼び出し)
Azure VM(リソースIDを確認)
作成したワークフローを保存します。
ロジックアプリデザイナーで保存を選択します。
Azure Logic Apps(リソース操作を呼び出し)

ワークフローを実行してAzure VM(仮想マシン)を起動

作成したLogic Apps(ロジックアプリ)のワークフローを実行します。
ワークフローの実行後にAzure VM(仮想マシン)の起動状態を確認します。
Logic Apps(ロジックアプリ)を使ってAzureリソースを操作した場合、アクテビティログのイベント開始者名にはLogic Apps(ロジックアプリ)名が入ります。

トリガーの実行
トリガーの実行で実行を選択します。 Azure Logic Apps(Azure VM起動)
正常に実行が完了すると緑のチェックが表示されます。 Azure Logic Apps(Azure VM起動)

トリガーやアクションを選択すると実行内容の詳細が表示されます。
”リソース操作を呼び出し”を選択して確認します。
出力を確認すると状態コード200となっています。
200は正常終了を表します。

※エラーの場合は状態コードが4XXや5XXとなります。

Azure Logic Apps(Azure VM起動)
Azure VM(仮想マシン)の状態を確認します。
”実行中”となっており、Azure VM(仮想マシン)起動している事が確認出来ます。
Azure Logic Apps(Azure VM起動)
アクテビティログを確認します。
イベント開始者がVM-Start-Stop-01とロジックアプリ名が表示されているログを確認します。
操作名:Start Virtual Machine、状態:成功のログが出力されています。
Azure Logic Apps(Azure VM起動)

※動作確認はトリガーの実行で行っています。スケジュールを含めて確認を行う場合は開始時間を現在時刻より少し後の時間を設定します。

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(ロジックアプリ)を複製(コピー)します。

複製(コピー)

Logic Apps(ロジックアプリ)の画面で複製を選択します。

Azure Logic Apps(複製)

Logic Apps(ロジックアプリ)の作成画面でLogic Apps(ロジックアプリ)名(VM-Start-Stop-02)を入力します。
作成を選択します。

※メッセージにも表示されていますが、マネージドIDの権限(ロールの割り当て)は複製(コピー)されません。

Azure Logic Apps(複製)

VM-Start-Stop-02のLogic Apps(ロジックアプリ)がデプロイされています。

Azure Logic Apps(複製)

ロジックアプリデザイナーでワークフローを確認します。
VM-Start-Stop-01で作成したワークフローがそのままコピー(複製)されています。

Azure Logic Apps(複製)

マネージドIDの再設定

ワークフローは複製(コピー)されていますが、マネージドIDの権限(ロールの割り当て)は複製(コピー)されません。
そのまま実行すると権限エラーになります。
マネージドIDのロールの割り当てを再設定します。

マネージドIDロールの割り当て再設定
マネージドIDにロールを割り当てます。
Azureロールの割り当て(アクセス許可)を選択します。
Azure Logic Apps(マネージドID割り当て)
ロールの割り当て状況を確認すると何も割り当てられていない事が確認出来ます。 Azure Logic Apps(マネージドID割り当て)

ロールの割り当ての追加を選択します。
対象となるAzure VM(仮想マシン)停止に必要な権限を割り当てます。

  • スコープ:ロールの割り当ての適用範囲
  • リソースグループ:ロールの割り当てるリソースグループ
  • 役割:ロールの割り当て内容

※権限の設定内容は実施する操作内容に合わせて選択します。

Azure Logic Apps(マネージドID割り当て)
ロールの割り当て内容を確認します。
リソースグループに対して仮想マシン共同作成者が割り当てられています。
Azure Logic Apps(マネージドID割り当て)

※今回はデフォルトロールで役割を選択しています。カスタムロールを使用する事により仮想マシンの起動停止だけに権限を制限する事も可能です。

ワークフローの修正

Azure VM(仮想マシン)を開始するLogic Apps(ロジックアプリ)のワークフローLogic Apps(ロジックアプリ)を修正します。
修正内容は開始時刻とアクションの変更になります。
実行時間は毎朝8時30分にしています。
アクションは開始から割り当て解除に変更しています。

REST-API(Virtual Machines)

ワークフローの修正

開始時刻を変更します。
Recurenceのトリガーで設定時刻(分)を0から30に変更します。
これで8時30分にワークフローが開始されるように変更されます。

リソース操作のアクションを変更します。
Azure VM(仮想マシン)の割り当て解除の場合は、アクション名に”Deallocate”を指定します。

REST-API(Virtual Machines – Deallocate)

※PowerOffを選択するとOSのシャットダウンのみでAzure VM(仮想マシン)自体は停止されません。(課金が継続します。)

Azure Logic Apps(Azure VM停止)

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

作成したLogic Apps(ロジックアプリ)のワークフローを実行します。
ワークフローの実行後にAzure VM(仮想マシン)の停止状態を確認します。

Azure VM(仮想マシン)の割り当て解除
トリガーの実行で実行を選択します。 Azure Logic Apps(Azure VM停止)
正常に実行が完了すると緑のチェックが表示されます。 Azure Logic Apps(Azure VM停止)
Azure VM(仮想マシン)の状態を確認します。
”停止済み(割り当て解除)”となっており、Azure VM(仮想マシン)が停止している事が確認出来ます。
Azure Logic Apps(Azure VM停止)
アクテビティログを確認します。
イベント開始者がVM-Start-Stop-02とロジックアプリ名が表示されているログを確認します。
操作名:Deallocate Virtual Machine、状態:成功のログが出力されています。
Azure Logic Apps(Azure VM停止)

※動作確認はトリガーの実行で行っています。スケジュールを含めて確認を行う場合は開始時間を現在時刻より少し後の時間を設定します。

Azure VM(仮想マシン)の電源状態と課金状況についてはこちら。

—-

Logic Apps(ロジックアプリ)にはAzure VMのアクションがある

Resource managerの”リソース操作を呼び出し”のアクションを利用してきましたが、実はLogic AppsにはAzure VMのアクションがあります。
Azure VMのアクションを利用するともう少し簡単に設定が出来ます。

仮想マシンの開始アクション

Azure VMでは”仮想マシンの開始”のアクションが準備されています。

仮想マシンの開始

検索欄にAzure VMと入力します。
”仮想マシンの開始”を選択します。

Azure Logic Apps(Azure VMアクション)

Azureテナントへのサインインが要求されます。
マネージドIDを使用して接続するを選択します。

Azure Logic Apps(Azure VMアクション)
接続名、マネージドIDを選択します。
接続名には仮想マシンの起動(任意)、マネージドIDにはシステム割り当てマネージドIDを選択します。
作成を選択します。
Azure Logic Apps(Azure VMアクション)

対象の仮想マシンにあわせて以下の項目を選択します。

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

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

Azure Logic Apps(Azure VMアクション)
作成したワークフローを保存します。
ロジックアプリデザイナーで保存を選択します。
Azure Logic Apps(Azure VMアクション)

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

Azure VMでは”仮想マシンの割り当て解除”のアクションが準備されています。

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

検索欄にAzure VMと入力します。
”仮想マシンの割り当て解除”を選択します。

※”仮想マシンの電源オフ”はOSのシャットダウンのみを行います。Azure VM(仮想マシン)の課金は継続します。

Azure Logic Apps(Azure VMアクション)
仮想マシンの起動と同様に設定し保存します。 Azure Logic Apps(Azure VMアクション)

スケジュール実行結果

スケジュール実行した結果を確認します。

スケジュール実行結果
スケジュール実行結果をAzure VM(仮想マシン)のアクテビティログで確認します。
8時00分に開始し8時30分に割り当て解除されている事が確認出来ます。

Azure Logic Apps(スケジュール実行結果)

最後に

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(仮想マシン)起動はこちら。