RunbookをLogic Appsから実行する
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(ロジックアプリ)のリソースを作成します。
確認画面で内容を確認し問題が無ければ作成します。
マネージドID設定
今回はAzure Automationコネクタの認証にはシステム割り当てマネージドIDを利用します。
Logic Apps(ロジックアプリ)にはAutomationアカウントでRunbookを実行する為に必要な役割を付与します。
Azure VM(仮想マシン)を起動する為の権限はAutomationアカウントに対して付与します。
起動対象のAzure VM(仮想マシン)
こちらAzure VM(仮想マシン)を起動します。
仮想マシン | |
今回の起動対象にAzure VM(仮想マシン)です。
|
今回はAzure VM(仮想マシン)を起動するRunbookをサンプルとして利用しています。
Azure VM(仮想マシン)起動についてはRunbookを利用せずともLogic Apps(ロジックアプリ)単体で完結させる事が出来ます。
—
Runbookを実行するワークフローを作成
Logic Apps(ロジックアプリ)はこちらのトリガーとアクションで構成しています。
-
- トリガー(繰り返し)
- Recurrence
- 日本時間朝9時にスケジュール実行
- Recurrence
- アクション(Azure Automationトリガー)
- ジョブの作成
- Runbookを呼び出す
- Runbookにパラメータを引き渡す
- RunbookがAzure VM(仮想マシン)を起動する
- ジョブの作成
- トリガー(繰り返し)
繰り返しトリガー作成
スケジュール実行には繰り返しトリガーを利用します。
繰り返しトリガー作成 | |
リソースメニューでロジックアプリデザイナーを選択します。 |
|
ロジックアプリを実行する頻度に日を選択します。 |
|
実行時間を設定します。
|
ジョブの作成アクションでRunbookを実行
Logic Apps(ロジックアプリ)からRunbookを呼び出すためにはAzure Automationのコネクタを利用します。
Runbookのジョブを実行には”ジョブの作成”アクションを利用します。
ジョブの作成 | |
Azure Automationのコネクタを利用します。検索欄に”Azure Automation”と入力します。 ”ジョブの作成”を選択します。 |
|
Automationアカウントに対しての認証はシステム割り当てマネージドIDで行います。 ※今回はジョブの待機をいいえに設定しています。はいにするとワークフロー実行時にRunbookジョブ完了まで待ちます。 |
|
Add new parameterでRunbookを指定します。Runbook名を追加します。 | |
Runbook名を指定します。 ※今回は事前に作成したRunbookを利用しています。 |
|
Runbook実行時に必要なパラメータを含めて設定が終わっている事を確認します。 | |
ワークフローを保存します。 |
ワークフローを実行
ワークフローを実行します。
Runbookの実行完了を待つ場合はジョブの待機設定を使う
Automationアカウントコネクタのジョブ作成アクション設定時にジョブの待機を”はい”に設定します。
これでRunbookのジョブ完了を待つワークフローが作成出来ます。
Runbook実行結果を取得してメール送信
Logic Apps(ロジックアプリ)のワークフロー自体はRunbookの実行結果関わらず正常に完了します。
これだとRunbookがエラーを出力していても分かりません。
そこでRunbookの出力結果を取得してメールしたいと思います。
一定時間経過後のRunbook実行状況を取得
一定時間経過後のRunbookを実行状況を知りたい場合はスケジュールコネクらの待ち時間を指定します。
今回は待ち時間を利用したフローを利用します。
※ジョブの待機設定ではいを選択した場合はRunbook実行完了までアクション完了を待ちます。待ち時間設定は必要ありません。
待ち時間設定 | |
検索欄に”待ち時間”と入力します。 待ち時間を選択します。 |
|
待ち時間は単位とカウントで設定します。 |
Runbookジョブの実行状況を取得
Azure Automationコネクタの”ジョブの出力を取得します”アクションを利用するとRunbookジョブの出力値を取得出来ます。
ジョブの出力を取得 | |
検索欄に”Azure Automation”と入力します。 |
|
ジョブIDを指定します。 ジョブIDはジョブの作成のジョブIDを指定します。 |
|
SendGridのコネクタを使ってメール送信
Logic Apps(ロジックアプリ)にはSendGrid用のコネクタが準備されています。
メール送信用のアクションを利用します。
-
- メール送信設定
- 送信元メールアドレス:SendGridで送信元として認証されているメールアドレス
- 送信先メールアドレス:送信先のメールアドレス
- 件名:メールの件名
- 本文:任意の文字列
- 添付ファイル:Runbookジョブ実行結果
- メール送信設定
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のクエリ実行結果をストレージアカウントに保管する方法についてはこちらに纏めています。