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を利用しています。 リソースグループ名、仮想マシン名をパラメータとしています。 |
Logic Appsのリソース作成
logic-runbook-01というリソース名で作成しています。
Logic Appsのリソース作成手順についてはこちらに記載しています。
今回は従量課金(消費)(マルチテナント)のプランで作成しています。
トリガーやアクションの概要についてもこちらで紹介しています。
システム割り当てマネージドID設定
AutomationアカウントのRunbookを実行するために必要なロールを、Logic Appsに割り当てます。
Azure Automationコネクタを利用する場合は、接続の作成(認証)が必要になります。
Logic Appsに対してAutomationアカウントでRunbookを実行する為に必要なロールを割り当てます。
今回はシステム割り当てマネージドIDを利用して認証します。
システム割り当てマネージドIDに"Automationオペレーター"のロールを割り当てています。
仮想マシンを起動する為のロールは、Automationアカウントに対して付与します。
Logic Appsに仮想マシンに対するロールは必要ありません。
Logic Appsでロールの割り当てを行う場合の手順です。
Automationアカウントのリソースがあるリソースグループに対してロールを割り当てています。
Logic Appsのリソースでロールの割り当てを行う場合 | |
左側のメニューでIDを選択します。 Azureロールの割り当てを選択します。 ロールの割り当てを追加します。 |
|
—広告—
Azure Automationコネクタを使ってLogic AppsのワークフローでRunbookを実行
毎朝9時30分にRunbookを実行するワークフローを作成します。
Azure Automationコネクタについて
Logic AppsからAzure Automationのサービスを利用するために用意されているコネクタです。
Runbookの実行などのアクションが用意されています。
トリガーの設定
サンプルとしてスケジュール実行するワークフローを作成します。
“Schedule"コネクタの"Recurrence"トリガーを利用して、ワークフローの実行をスケジュール化します。
毎日9時30分(日本時間)にワークフローが開始されるようにします。
ワークフローを平日のみ実行する方法についてはこちらの記事で紹介しています。
日付や時刻に関するアクションや関数についてはこちらの記事にまとめています。
ワークフローでRunbookを実行する場合は"ジョブの作成"アクションを使う
Logic AppsのワークフローからRunbookを呼び出すためにはAzure Automationのコネクタを利用します。
”ジョブの作成”アクションを使って、Logic AppsのワークフローからRunbookを実行します。
ワークフローの実行結果を確認
作成したワークフローを実行して、実行結果を確認します。
ワークフローでRunbookの実行完了を待つ場合はジョブの待機を"はい"にする
“ジョブの作成"アクションには、ジョブの待機というパラメーターがあります。
このパラメーターはRunbookのジョブ完了を待って次のアクション進むかどうかのパラメーターになります。
ジョブの待機設定 | |
“ジョブの待機"の設定内容によりワークフローの実行時間が変わります。 “ジョブの待機"の設定を"はい"にした場合には、Runbookの実行完了を待つため、ジョブの作成アクションの完了時間が長くなっています。 |
|
【ジョブの待機を"いいえ"にした場合】 | |
【ジョブの待機を"はい"にした場合】 |
Logic Appsから仮想マシン起動するワークフローについては色々な方法があります。
Runbookを使わなくてもできます。
今回はサンプルRunbookとして利用しています。
—広告—
Logic AppsのワークフローでRunbookの実行結果を取得してメール送信
Azure Automationコネクタを使って、Runbookの実行結果を取得する事ができます。
Logic Appsのワークフローで実行したRunbookの実行結果を取得してメール送信します。
“ジョブの出力を取得します"アクションを使ってワークフローでRunbookを実行結果を取得
ワークフロー内でRunbookジョブの実行結果を取得する場合は、"Azure Automation"コネクタの”ジョブの出力を取得します”アクションを利用します。
“ジョブの出力を取得します"アクションを設定 | |
検索欄に”Azure Automation”と入力します。 |
|
“ジョブの出力を取得します"アクションの設定画面です。AutomationアカウントとジョブIDを指定します。 |
“ジョブの出力を取得します"アクションの出力結果を加工
ジョブの出力を取得しますアクションの出力結果をそのままメール本文に設定すると1行で表示されます。
メール本文表示に設定した場合でも改行して表示されるように出力結果を加工します。
Data OperationsのComposeアクションを利用しています。
replace関数を利用して改行コードをbrタグに置き換えています。
改行コードをbrタグに置換 | |
“Data Operations"コネクタの"Compose"アクションを選択します。 replace関数を利用して改行コードをbrタグに置換します。 |
|
ロジックアプリコードビューでreplace関数修正
ロジックアプリデザイナーを使って改行コードを設定するとエスケープされて改行コードが正しく認識されません。
ロジックアプリコードビューで修正します。
replace関数の修正 | |
ロジックアプリコードビューで"\\"を"\"に修正して保存します。 | 【修正前】 |
【修正後】 |
SendGridを使ってLogic Appsのワークフローでメール送信
Logic AppsにはSendGridのコネクタが用意されています。
“メール送信(V4)"のアクションを利用してRunbookジョブの実行結果をメール送信します。
-
- メール送信設定
- 送信元:SendGridで認証されている送信元のメールアドレス
- 宛先:送信先のメールアドレス
- 件名:ジョブの実行結果メールの件名
- 本文:Composeアクションのアウトプット
- メール送信設定
Logic AppsのワークフローでSendGrid使ってメール送信する手順についてはこちらで紹介しています。
SendGridを使ってメール送信 | |
SendGridのコネクタでメールの送信(V4)のアクションを設定します。 メールの本文にComposeアクションのOutputsを設定します。
|
|
完成したワークフロー
完成したワークフローです。
ジョブの出力の取得から、メール送信までのアクションが追加されています。
完成したワークフロー | |
ジョブの作成後にジョブの実行結果を取得しメール送信しています。 |
ワークフロー実行結果を確認
ワークフローを実行して結果を確認します。
ワークフローの実行結果 | |
実行履歴を確認します。 トリガーとアクションにグリーンのチェックマークが表示されており、完了が確認できます。 |
|
受信したメールを確認します。 |
※今回は検証目的での設定です。
最後に
Logic AppsのワークフローからAutomationアカウントのRunbookを実行する手順を確認してみました。
Azure Automationのコネクタが用意されていて、簡単に設定できる事が分かりました。
Logic AppsとRunbookを組合せて使える事で、ワークフローを使って自動化できる事の幅も増やせそうです。
今後も引き続き色々試してみたいと思います。
Logic AppsのワークフローでLog Analyticsのクエリを実行して結果を取得する方法についてはこちらの記事で紹介しています。
Logic Apps ワークフローでストレージアカウントのファイル(BLOB)操作する方法についてはこちらで紹介しています。
コンテナーへのファイル書き込みやコンテナーからCSVファイルを読み取りる方法について確認しています。