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

Azure環境のバックアップとして定期的にARMテンプレートのエクスポートをしたかったので調べてみた所、Logic AppsのResource ManagerにExport a resource group templateというアクションを使ってできそうでした。実際に試してみた所JavaScriptでの変換が必要でしたが出来ました。

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

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

スポンサーリンク

統合アカウントの作成

Logic Appsで利用する統合アカウントを作成します。今回はLogic Apps中でJavaScriptのアクションを利用する際に統合アカウントが必要になります。

作成手順

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

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

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

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

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

ARM(Azure Resource Manager)テンプレートをエクスポートするAzure 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テンプレートを取得します。

作成手順

検索欄に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形式に成形します。

作成手順

検索欄にJavaScriptと入力します。

JavaScriptコードの実行を選択します。

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

コードには、以下の通り入力します。

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

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

 

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

エクスポートしたARMテンプレートをメール送信(SendGrid)するアクションを作成します。

作成手順

検索欄にSendGridと入力します。

メールの送信(V4)を選択します。

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

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

Add new parameterを選択します。

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

 

添付ファイルにJavaScriptの実行結果を選択します。

添付ファイル名はtemplateとし、ContentTypeはtext/jsonとしています。

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

ロジックアプリを実行してみる

作成したロジックアプリを実行してみます。

Logic Apps実行結果

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

エラーなく実行されました。

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

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

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

Logic Appsを利用してサブスクリプション内のリソース正常性をメール送信するという事もやっています。