Azure Logic Appsを使ってARMテンプレートのエクスポートからメール送信までやってみた

ARM Template,Azure,Logic Apps

Azure環境のバックアップとして定期的にARMテンプレートのエクスポートをしたかったので調べてみた所、Logic Apps(ロジックアプリ)のResource ManagerコネクタにExport a resource group templateというアクションがありました。
試してみた所JavaScriptでの変換が必要でしたがARMテンプレートのエクスポートが出来ました。

今回はAzure Logic Apps(ロジックアプリ)のExport a resource group templateアクションを利用して、リソースグループ単位でARMテンプレートのエクスポートから添付ファイルとしてメール送信までやってみました。

※サンプルという事でテンプレートの送信方法にメールを利用していますが、この編は利用用途に合わせて適時変更をお願い致します。

スポンサーリンク

統合アカウントの作成

Logic Apps(ロジックアプリ)で利用する統合アカウントを作成します。
JavaScriptのアクションを利用する際に統合アカウントが必要になります。

統合アカウント作成

統合アカウントのサービスで新規をクリックします。

統合アカウントの作成が表示されますので、設定を行います。

  • リソースグループ名
  • 統合アカウント名
  • リージョン
  • 価格レベル

価格レベルは無料を選択します。(サブスクリプションに対して1つしか作成出来ません。すでにあるあ場合はそのアカウントを利用します。)

設定する値の入力が完了したら確認および作成をクリックします。確認画面が表示されますので作成します。

ARM(Azure Resource Manager)テンプレートをエクスポートするワークフローを作成

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

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

リソース作成

ロジックアプリのメニューで追加(従量課金プラン)を選択します

ロジックアプリ作成で設定を行います。

  • リソースグループ名
  • ロジックアプリ名
  • リージョン

設定する値の入力が完了したら確認および作成をクリックします。

※今回はtemplate-export-Logic-Appsという名前で作成しています。

確認画面が表示されますので作成をクリックします。

統合アカウントとLogic Apps(ロジックアプリ)の関連付け

Logic Appsで統合アカウントを利用するには関連付けが必要になります。

ワークフロー設定

ロジックアプリのメニューで設定にあるワークフロー設定を選択します。

統合アカウントという項目がありますので、先ほど作成した統合アカウントを選択します。保存すれば完了です。

繰り返しのトリガーを作成

ロジックアプリデザイナーを使って作成していきます。
最初にトリガーを作成します。
毎週日曜日3時に実行するようにしてみました。

繰り返しトリガー作成
ロジックアプリデザイナーで、繰り返しのトリガーを選択します。

今回は毎週ですので、間隔に1、頻度に週を選択をします。

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

毎週日曜日3時(日本時間)に起動するように設定します。

Export a resource group templateのアクションを作成

Azure Resource ManagerにあるExport a resource group templateのアクションを使い、リソースグループ単位でARMテンプレートを取得します。

Export a resource group templateのアクション作成

検索欄にAzure Resource Exportと入力します。
Export a resource group templateを選択します。

Azure Resource ManagerのアクションはAzureへのサインインを要求されます。サインインをクリックするとAzureへのログイン画面が表示されますのでログインします。

Subscription、Resource Groupを選択します。

設定を確認します。

※今回はデフォルトの設定にしています。
ARMテンプレートにDefaultValueを含むか等の設定は、Add new parameterのOptionで指定します。

JavaScriptのアクションを作成

Export a resource group templateで出力したファイルそのままだと出力結果がレイアウトが崩れていました。
そこでJavaScriptコードの実行というアクションを利用してJSON形式に成形します。
コードには以下の通り入力します。

var data01 = workflowContext.actions.Export_a_resource_group_template.outputs.body.template;
var data02 = JSON.stringify(data01, null, ' ');
return data02;

JavaScriptのアクションを作成

検索欄にJavaScriptと入力します。
JavaScriptコードの実行を選択します。

JavaScriptのコードの入力欄が表示されます。
デフォルトでサンプルが入っているので書き換えます。

※data01にExport a resource group templateで出力した値を設定し、JSON.stringifyを使ってJSON形式に変換しています。改行は適時修正下さい。

 

SendGridを使ってメール送信するアクションを作成

エクスポートしたARMテンプレートをメール送信(SendGrid)するアクションを作成します。
SendGridのAPIキーの確認等についてはこちらを参照願います。

SendGridのコネクタ設定

検索欄にSendGridと入力します。
メールの送信(V4)を選択します。

SendGridアカウントの認証設定が表示されます。
接続名とSendGrid APIキーを入力します。

メール送信の設定画面が表示されます。送信元、宛先、件名等を入力します。
Add new parameterを選択します。

添付ファイルにチェックを入れます。

添付ファイルにJavaScriptの実行結果を選択します。
添付ファイル名はtemplateとし、ContentTypeはtext/jsonとしています。

最後にロジックアプリデザイナーで保存を選択します。

ARMテンプレートをエクスポートするワークフローを実行

作成したLogic Apps(ロジックアプリ)を実行します。

ワークフロー実行結果

ロジックアプリデザイナーの画面で実行をクリックします。

緑のチェックが表示されており、エラーなく実行された事が分かります。

添付ファイルとしてエクスポートしたARMテンプレートをメール送信できる事が確認出来ました。

※ARMテンプレートにDefaultValueを含むかなどの設定は、Export a resource group templateのOptionで指定します。

改善すべき点はいっぱいあるかと思います。今後も継続して勉強して行きたい所です。

PowerShellを使ったARMテンプレートエクスポートについてはこちらに纏めています。

Logic Apps(ロジックアプリ)を利用してサブスクリプション内のリソース正常性をメール送信する方法についてはこちらに纏めています。

スポンサーリンク