Logic Appsのワークフロー内からRunbookを実行する手順

2022-09-28Automationアカウント,Azure,Logic Apps,Runbook

Azure Logic Apps(ロジックアプリ)のワークフローからAzure AutomationアカウントのRunbookを実行する方法の紹介です。

Logic AppsにはAzure Automationコネクタが用意されており、ワークフローからRunbookを実行することができます。
仮想マシン(Azure VM)を起動するRunbookを例に、Logic AppsのワークフローからRunbookを実行する手順を確認しました。
Runbookの実行結果を主と期して、メール送信する方法も紹介しています。

※Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※Azure Logic Apps(ロジックアプリ)をLogic Appsとして表記しています。

スポンサーリンク

事前準備(Logic Appsリソース作成、マネージドID割り当て)

仮想マシンを起動するRunbook

今回はサンプルとして、仮想マシンを起動するRunbookを利用しています。
仮想マシン名、リソースグループ名はRunbook実行時に指定します。

仮想マシンを起動するRunbook
vm-start-01というRunbookを利用しています。
リソースグループ名、仮想マシン名をパラメータとしています。
仮想マシンを起動するRunbookの例

Logic Appsのリソース作成

logic-runbook-01というリソース名で作成しています。

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

システム割り当てマネージドID設定

AutomationアカウントのRunbookを実行するために必要なロールを、Logic Appsに割り当てます。

Azure Automationコネクタを利用する場合は、接続の作成(認証)が必要になります。
Logic Appsに対してAutomationアカウントでRunbookを実行する為に必要なロールを割り当てます。

今回はシステム割り当てマネージドIDを利用して認証します。
システム割り当てマネージドIDに"Automationオペレーター"のロールを割り当てています。

仮想マシンを起動する為のロールは、Automationアカウントに対して付与します。
Logic Appsに仮想マシンに対するロールは必要ありません。

Automationアカウントでロールを割り当てする場合
Automationアカウントのアクセス制御(IAM)で、ロールの割り当てを追加します。 Automationアカウントのアクセス制御(IAM)画面
ロールの割り当てです。
職務ロールのタブで"Automationオペレーター"を選択します。
Automationオペレーターのロール割り当てを追加
ロールを割り当てするメンバーを選択します。
Logic AppsのマネージドIDを選択します。
システム割り当てマネージドIDをロール割り当てメンバーに追加
システム割り当てマネージドIDをロール割り当てメンバーに追加

確認画面です。
ロール、スコープ、メンバーを確認して割り当てます。
Logic AppsへAutomationオペレーターロール割り当て確認画面
Automationアカウントのアクセス制御(IAM)設定です。
“Automationオペレーター"としてLogic Appsのリソースが割り当てされています。

Logic Appsへロール割り当て後のAutomationのアクセス制御(IAM)画面例

Logic Appsでロールの割り当てを行う場合の手順です。
Automationアカウントのリソースがあるリソースグループに対してロールを割り当てています。

Logic Appsのリソースでロールの割り当てを行う場合
左側のメニューでIDを選択します。
Azureロールの割り当てを選択します。
ロールの割り当てを追加します。
Logic Appsでシステム割り当てマネージドIDを有効化

リソースグループへAutomationオペレーターのロールを割り当て(Logic Appsのロール割り当て追加画面)

—広告—

Azure Automationコネクタを使ってLogic AppsのワークフローでRunbookを実行

毎朝9時30分にRunbookを実行するワークフローを作成します。

Azure Automationコネクタについて

Logic AppsからAzure Automationのサービスを利用するために用意されているコネクタです。
Runbookの実行などのアクションが用意されています。

Azure Automation

トリガーの設定

サンプルとしてスケジュール実行するワークフローを作成します。
“Schedule"コネクタの"Recurrence"トリガーを利用して、ワークフローの実行をスケジュール化します。
毎日9時30分(日本時間)にワークフローが開始されるようにします。

Recurenceのトリガーを設定
ロジックアプリデザイナーのメニューを選択します。
トリガーの追加を選択します。
“Schedule"コネクタで"Recurence"トリガーを追加します。
ScheduleコネクタでRecurrenceを選択(Logic AppsからRunbookを実行するワークフロー)

Recurrenceのトリガーを追加(Logic AppsからRunbookを実行するワークフロー)

実行スケジュールの設定です。
“Interval"と"Frequency"の設定を1日とします。
“Time Zone"、"At These Hours"、"At These Minutes"の設定を組み合わせて日本時間9時30分にスケジュールします。

Recurrenceのトリガーでスケジュール設定(Logic AppsからRunbookを実行するワークフロー)

ワークフローを平日のみ実行する方法についてはこちらの記事で紹介しています。

日付や時刻に関するアクションや関数についてはこちらの記事にまとめています。

ワークフローでRunbookを実行する場合は"ジョブの作成"アクションを使う

Logic AppsのワークフローからRunbookを呼び出すためにはAzure Automationのコネクタを利用します。
”ジョブの作成”アクションを使って、Logic AppsのワークフローからRunbookを実行します。

Azure Automation

ジョブの作成アクションの設定

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

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

Azure Automationコネクタでジョブの作成を選択(Logic AppsからRunbookを実行するワークフロー)

“Azure Automation"コネクタ接続の作成画面です。認証の種類はLogic AppsのマネージドIDを選択します。

Azure Automationコネクタで新しい接続を作成

“ジョブの作成"アクションの設定画面です。
RunbookがあるAutomationアカウントを選択します。

ジョブの作成のパラメータ設定(Logic AppsからRunbookを実行するワークフロー)
Logic Appsのアクションでカスタム値入力

“ジョブの作成"アクションの詳細パラメーター設定です。
Runbook名にチェックを入れます。
実行するRunbookを選択します。
Runbook実行時に設定するパラメーターを指定します。

 

ジョブの作成アクションの詳細パラメーター設定でRunbookのパラメーターを指定(Logic AppsからRunbookを実行するワークフロー)
詳細パラメーターでRunbook名にチェックを入れる
ワークフローを保存します。 作成したLogic Appsワークフロー(Logic AppsからRunbookを実行するワークフロー)

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

作成したワークフローを実行して、実行結果を確認します。

ワークフローを実行
実行履歴を確認します。
状態がSucceededになっており、ワークフローが完了しています。
Logic AppsからRunbookを実行するワークフローの実行履歴
Runbookでジョブ実行状況を確認します
状態が完了になっています。
Runbookのジョブでパラメータの入力値を確認します。
Logic Appsワークフローで設定した値が入力されています。
Logic Appsから呼び出されたRunbookのジョブ履歴
Logic Appsから呼び出されたRunbookの入力値
仮想マシンのアクテビティログを確認します。
Automationアカウントにより仮想マシンが起動された事が確認できます。
Azure VMのアクテビティログ

ワークフローでRunbookの実行完了を待つ場合はジョブの待機を"はい"にする

“ジョブの作成"アクションには、ジョブの待機というパラメーターがあります。
このパラメーターはRunbookのジョブ完了を待って次のアクション進むかどうかのパラメーターになります。

ジョブの待機設定
“ジョブの待機"の設定内容によりワークフローの実行時間が変わります。
“ジョブの待機"の設定を"はい"にした場合には、Runbookの実行完了を待つため、ジョブの作成アクションの完了時間が長くなっています。
ジョブの待機設定例(Azure Automationコネクタのジョブの作成の詳細パラメータ)
【ジョブの待機を"いいえ"にした場合】ジョブの待機をいいえにした時のワークフロー実行履歴

【ジョブの待機を"はい"にした場合】

ジョブの待機をはいにした時のワークフロー実行履歴

Logic Appsから仮想マシン起動するワークフローについては色々な方法があります。
Runbookを使わなくてもできます。
今回はサンプルRunbookとして利用しています。

—広告—

Logic AppsのワークフローでRunbookの実行結果を取得してメール送信

Azure Automationコネクタを使って、Runbookの実行結果を取得する事ができます。
Logic Appsのワークフローで実行したRunbookの実行結果を取得してメール送信します。

“ジョブの出力を取得します"アクションを使ってワークフローでRunbookを実行結果を取得

ワークフロー内でRunbookジョブの実行結果を取得する場合は、"Azure Automation"コネクタの”ジョブの出力を取得します”アクションを利用します。

ジョブ出力を取得

“ジョブの出力を取得します"アクションを設定

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

Azure Automationコネクタでジョブの出力を取得しますアクセションを選択

“ジョブの出力を取得します"アクションの設定画面です。AutomationアカウントとジョブIDを指定します。
ジョブIDには"ジョブの作成"アクションのジョブIDを指定します。

ジョブの出力を取得しますアクションでジョブIDのパラメーターを設定

“ジョブの出力を取得します"アクションの出力結果を加工

ジョブの出力を取得しますアクションの出力結果をそのままメール本文に設定すると1行で表示されます。
メール本文表示に設定した場合でも改行して表示されるように出力結果を加工します。
Data OperationsのComposeアクションを利用しています。

作成アクション

replace関数を利用して改行コードをbrタグに置き換えています。

replace

改行コードをbrタグに置換
“Data Operations"コネクタの"Compose"アクションを選択します。
replace関数を利用して改行コードをbrタグに置換します。
Data operationsコネクタでComposeのアクションを選択
Composeのアクションでreplaceの関数を設定
replaceの関数を設定例

ロジックアプリコードビューでreplace関数修正

ロジックアプリデザイナーを使って改行コードを設定するとエスケープされて改行コードが正しく認識されません。
ロジックアプリコードビューで修正します。

replace関数の修正
ロジックアプリコードビューで"\\"を"\"に修正して保存します。 【修正前】replace関数をロジックアプリコードビューで表示
【修正後】replace関数をロジックアプリコードビューで修正

SendGridを使ってLogic Appsのワークフローでメール送信

Logic AppsにはSendGridのコネクタが用意されています。
“メール送信(V4)"のアクションを利用してRunbookジョブの実行結果をメール送信します。

    • メール送信設定
      • 送信元:SendGridで認証されている送信元のメールアドレス
      • 宛先:送信先のメールアドレス
      • 件名:ジョブの実行結果メールの件名
      • 本文:Composeアクションのアウトプット

Logic AppsのワークフローでSendGrid使ってメール送信する手順についてはこちらで紹介しています。

SendGridを使ってメール送信
SendGridのコネクタでメールの送信(V4)のアクションを設定します。
メールの本文にComposeアクションのOutputsを設定します。

 

 

Logic AppsのワークフローでSendgirdコネクタのメールの送信アクションを設定
ComposeアクションのOutputsを指定

完成したワークフロー

完成したワークフローです。
ジョブの出力の取得から、メール送信までのアクションが追加されています。

完成したワークフロー
ジョブの作成後にジョブの実行結果を取得しメール送信しています。 Logic AppsでRunbookを実行してRunbookの実行結果をメール送信するワークフローの例

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

ワークフローを実行して結果を確認します。

ワークフローの実行結果
実行履歴を確認します。
トリガーとアクションにグリーンのチェックマークが表示されており、完了が確認できます。
Runbookを実行してRunbookの実行結果をメール送信するLogic Appsのワークフロー実行結果

受信したメールを確認します。
メール本文でRunbookの実行結果を確認できます。

ジョブの実行結果のメール送信結果例

※今回は検証目的での設定です。

最後に

Logic AppsのワークフローからAutomationアカウントのRunbookを実行する手順を確認してみました。
Azure Automationのコネクタが用意されていて、簡単に設定できる事が分かりました。
Logic AppsとRunbookを組合せて使える事で、ワークフローを使って自動化できる事の幅も増やせそうです。

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

Logic AppsのワークフローでLog Analyticsのクエリを実行して結果を取得する方法についてはこちらの記事で紹介しています。

Logic Apps ワークフローでストレージアカウントのファイル(BLOB)操作する方法についてはこちらで紹介しています。
コンテナーへのファイル書き込みやコンテナーからCSVファイルを読み取りる方法について確認しています。

スポンサーリンク