RunbookをLogic Appsから実行する

Automationアカウント,Azure,Logic Apps,Runbook

Logic Apps(ロジックアプリ)ではPowerShellが扱えず困ってました。
色々調べてみた結果、Logic Apps(ロジックアプリ)からRunbookを実行できる事が分かりました。

Logic Apps(ロジックアプリ)のAzure Automationコネクタを使いRunbookを実行してみました。
今回はサンプルとしてAzure VM(仮想マシン)を起動するRunbookを使っています。

    • 前提
      • ワークフローをスケジュール実行する
      • Azure VM(仮想マシン)を起動するRunbookを使う
      • 起動するAzure VM(仮想マシン)はLogic Appsで指定する
      • 権限付与はシステム割り当てマネージドIDを利用する 
      • Runbook実行結果をメール送信する

スポンサーリンク

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

Logic Apps(ロジックアプリ)のリソースを作成します。
Runbook実行の為にシステム割り当てマネージドIDの有効化から権限付与を行います。

利用するRunbook

こちらの記事で作成したRunbookを利用します。
Azure VM(仮想マシン)を起動するRunbookになります。
Azure VM(仮想マシン)名、リソースグループ名を指定してRunbookを実行します。

Runbook
リソースグループ名、Azure VM(仮想マシン)をパラメータとしています。
パラメータ指定したAzure VMをStart-AzVMで起動しています。

リソース作成

Logic Apps(ロジックアプリ)のリソースを作成します。

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

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

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

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

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

プランの種類は消費を選択しています。
ロジックアプリ名は”runbook-start-up”としています。

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

 

確認画面で内容を確認し問題が無ければ作成します。

マネージドID設定

今回はAzure Automationコネクタの認証にはシステム割り当てマネージドIDを利用します。
Logic Apps(ロジックアプリ)にはAutomationアカウントでRunbookを実行する為に必要な役割を付与します。
Azure VM(仮想マシン)を起動する為の権限はAutomationアカウントに対して付与します。

システム割り当てマネージドID設定
マネージドIDを有効化します。
Logic Apps(ロジックアプリ)のリソースメニューでIDを選択します。
状態をオンにし保存します。
ロールを割り当てます。
Azureロールの割り当てを選択します。
ロールの割り当ての追加を選択します。
スコープはリソースグループを選択します。
Automationアカウントがあるリソースグループを選択します。
役割はAutomationオペレーターを選択しています。
リソースグループに対してロールの割り当て設定されている事が確認出来ます。

起動対象のAzure VM(仮想マシン)

こちらAzure VM(仮想マシン)を起動します。

仮想マシン

今回の起動対象にAzure VM(仮想マシン)です。

  •  リソースグループ名
    • test-rg
  • Azure VM名
    • test-vm-01

今回はAzure VM(仮想マシン)を起動するRunbookをサンプルとして利用しています。
Azure VM(仮想マシン)起動についてはRunbookを利用せずともLogic Apps(ロジックアプリ)単体で完結させる事が出来ます。

Runbookを実行するワークフローを作成

Logic Apps(ロジックアプリ)はこちらのトリガーとアクションで構成しています。

    • トリガー(繰り返し)
      • Recurrence 
        • 日本時間朝9時にスケジュール実行
    • アクション(Azure Automationトリガー)
      • ジョブの作成
        • Runbookを呼び出す
        • Runbookにパラメータを引き渡す
        • RunbookがAzure VM(仮想マシン)を起動する

繰り返しトリガー作成

スケジュール実行には繰り返しトリガーを利用します。

繰り返しトリガー作成

リソースメニューでロジックアプリデザイナーを選択します。
繰り返しのトリガーを選択します。

ロジックアプリを実行する頻度に日を選択します。
Add new parameterを選択し、タイムゾーン、設定時刻(時間)、設定時刻(分)を追加します。

実行時間を設定します。
タイムゾーンに日本時間を選択します。
設定時刻(時間)と(分)を9時00分と設定します。

 

ジョブの作成アクションでRunbookを実行

Logic Apps(ロジックアプリ)からRunbookを呼び出すためにはAzure Automationのコネクタを利用します。
Runbookのジョブを実行には”ジョブの作成”アクションを利用します。

ジョブの作成

Azure Automationのコネクタを利用します。検索欄に”Azure Automation”と入力します。

”ジョブの作成”を選択します。

Automationアカウントに対しての認証はシステム割り当てマネージドIDで行います。
Automationアカウントのリソースグループやリソースを指定します。

※今回はジョブの待機をいいえに設定しています。はいにするとワークフロー実行時にRunbookジョブ完了まで待ちます。

Add new parameterでRunbookを指定します。Runbook名を追加します。

Runbook名を指定します。
Runbook実行時の入力値が表示されます。今回はリソースグループとAzure VM(仮想マシン)名をパラメータとして指定します。

※今回は事前に作成したRunbookを利用しています。

Runbook実行時に必要なパラメータを含めて設定が終わっている事を確認します。
ワークフローを保存します。

ワークフローを実行

ワークフローを実行します。

ワークフローを実行
実行を選択します。
ジョブの作成を含めてグリーンのチェックが表示されている事が確認出来ます。
Runbookでジョブ実行状況を確認します。
Runbookのジョブでパラメータの入力値を確認します。
Logic Apps(ロジックアプリ)ワークフローで設定した値が入力されている事が確認出来ます。
Azure VM(仮想マシン)の状態を確認すると実行中になっている事が確認出来ます。

Azure VM(仮想マシン)のアクティビティログを確認します。
イベント開始者がRunbook名となったログが確認出来ます。操作名がStart Virtual MachineとなっておりRunbookによりAzure VM(仮想マシン)が起動されたログである事が分かります。

Runbookの実行完了を待つ場合はジョブの待機設定を使う

Automationアカウントコネクタのジョブ作成アクション設定時にジョブの待機を”はい”に設定します。
これでRunbookのジョブ完了を待つワークフローが作成出来ます。

Runbook実行結果を取得してメール送信

Logic Apps(ロジックアプリ)のワークフロー自体はRunbookの実行結果関わらず正常に完了します。
これだとRunbookがエラーを出力していても分かりません。
そこでRunbookの出力結果を取得してメールしたいと思います。

一定時間経過後のRunbook実行状況を取得

一定時間経過後のRunbookを実行状況を知りたい場合はスケジュールコネクらの待ち時間を指定します。
今回は待ち時間を利用したフローを利用します。

※ジョブの待機設定ではいを選択した場合はRunbook実行完了までアクション完了を待ちます。待ち時間設定は必要ありません。

待ち時間設定
検索欄に”待ち時間”と入力します。
待ち時間を選択します。

待ち時間は単位とカウントで設定します。
今回は2分で設定します。

Runbookジョブの実行状況を取得

Azure Automationコネクタの”ジョブの出力を取得します”アクションを利用するとRunbookジョブの出力値を取得出来ます。

ジョブの出力を取得

検索欄に”Azure Automation”と入力します。
”ジョブの出力を取得します”を選択します。

ジョブIDを指定します。
ジョブIDはジョブの作成のジョブIDを指定します。

SendGridのコネクタを使ってメール送信

Logic Apps(ロジックアプリ)にはSendGrid用のコネクタが準備されています。
メール送信用のアクションを利用します。

    • メール送信設定
      • 送信元メールアドレス:SendGridで送信元として認証されているメールアドレス
      • 送信先メールアドレス:送信先のメールアドレス
      • 件名:メールの件名
      • 本文:任意の文字列
      • 添付ファイル:Runbookジョブ実行結果
SendGridを使ってメール送信
検索欄に”SendGrid”と入力します。
”メールの送信”を選択します。
SendGridの接続情報になります。
接続名は任意で設定します。
SendGrid Api KeyはSendGridのAPIキーを指定します。

メール送信設定します。
Add new parameterで添付ファイルを追加します。

添付ファイルの内容は、添付ファイル本文に記載される内容になります。”ジョブの出力を取得します”アクションの内容を指定します。
ContentTypeはtext/plainを指定します。
添付ファイル名を任意で指定します。今回はjobresult.txtとしています。

SendGridのAPI Key設定についてはこちらも併せて参照願います。

ーーー

ワークフロー実行結果を確認

”トリガーの実行”を使ってワークフローを実行します。

トリガーの実行
”トリガーの実行”の”実行”を選択します。
実行完了するとグリーンのチェックマークが表示されます。

メールを受信すると添付ファイルがついてます。Runbookの実行結果が表示されています。StatusがSucceededとなっておりRunbookが成功している事が確認出来ました。

今回は検証目的ですのでRunbook実行結果をメール送信しています。
実際の利用用途やセキュリティ要件にあわせて通知方法は検討して下さい。

最後に

Logic Apps(ロジックアプリ)でRunbookを実行する事が確認できましました。
Logic Apps(ロジックアプリ)単体では直接PowerShellを使う事は出来ません。
ですが、Runbookを介すことでLogic Apps(ロジックアプリ)PowerShellの実行が可能となります。

今後も引き続き色々試してみたいと思います。

Logic Apps(ロジックアプリ)を使ってメール本文に記載されたAzure VM(仮想マシン)名を取得、起動してみました。

Logic Apps(ロジックアプリ)を使ってLog Analyticsのクエリ実行結果をメール送信する方法についてはこちらに纏めています。

Logic Apps(ロジックアプリ)を使ってLog Analyticsのクエリ実行結果をストレージアカウントに保管する方法についてはこちらに纏めています。

スポンサーリンク