Logic Appsを使ったARMテンプレートのエクスポート(ストレージアカウントに保管)
Azure Logic Apps(ロジックアプリ)を使ったARMテンプレートのエクスポート方法のご紹介です。
ワークフローをスケジュール実行する事で、定期的にARMテンプレートをエクスポートしています。
エクスポートしたARMテンプレートはストレージアカウントのBLOBコンテナーに保管しています。
Azureリソース設定のバックアップとして定期的にARMテンプレートのエクスポートをしたかったので調べてみました。
Logic Appsの"Azure Resource Manager"コネクタに"リソース グループ テンプレートをエクスポート"というアクションがありました。
今回はARMテンプレートのエクスポートから、BLOBコンテナーへの保管までのLogic Appsワークフローを紹介します。
ARMテンプレート自体はJSON形式なのですが、1行でミニファイ(minify)された状態で出力されます。
JavaScript使ったARMテンプレートの整形方法も紹介しています。
※本記事内ではロジックアプリ(Azure Logic Apps)をLogic Appsとして表記しています。
Logic Appsのリソース作成、マネージドID設定
Logic Appsのリソース作成
logic-arm-export-01というリソース名で作成しています。
Logic Appsのリソース作成手順についてはこちらに記載しています。
今回は従量課金(消費)(マルチテナント)のプランで作成しています。
トリガーやアクションの概要についてもこちらで紹介しています。
システム割り当てマネージドIDの有効化とロール割り当て
Logic Appsでシステム割り当てマネージドIDの設定を行います。
マネージドIDを利用して、Logic Appsのワークフローからリソースを操作する為の権限を付与します。
有効化とロールの割り当てを追加します。
-
- 追加したロール
- リソースグループに閲覧者
- ストレージアカウントにストレージBlob共同作成者
- 追加したロール
システム割り当てマネージドIDの設定 | |
左側のリソースメニューで"ID"を選択します。
|
|
ストレージアカウントのネットワーク設定
ストレージアカウントでネットワークアクセスの制限をしている場合は、アクセス許可設定が必要になる事があります。
手順についてはこちらで紹介しています。
—広告—
ARMテンプレートをエクスポートしてBLOBコンテナーに保管するワークワークフロー
ロジックアプリデザイナーを使ってARMテンプレートをエクスポートするワークフローを作成します。
ワークフローはスケジュール実行するようにしています。
エクスポートしたARMテンプレートはBLOBコンテナー名に保管します。
ファイル(BLOB)名には日付を付与しています。
“Azure Resource Manager"コネクタとは
Logic Apps上でAzureのリソースを管理するために用意されているコネクタです。
Logic Apps内でAzureリソースの作成、更新、削除、取得、開始、停止と言った様々な操作ができます。
“Azure Resource Manager"コネクタを利用したリソース操作方法についてはこちらにまとめています。
仮想マシンの起動停止を例に設定方法を紹介しています。
“リソース グループ テンプレートをエクスポート"アクションとは
リソース グループからARMテンプレートをエクスポートします。
Export a resource group template
イメージとしては、Azure PortalにもあるテンプレートのエクスポートをLogic Appsのワークフローで出来るようにした感じです。
ワークフローをスケジュール実行(トリガーを作成)
ワークフローをスケジュール実行する場合、Scheduleコネクタが利用できます。
“Schedule"コネクタの"Recurence"トリガーを利用して、毎日9時30分(日本時間)にワークフローが開始されるようにします。
現在日時の取得
実行された日時をワークフロー内で取得します。
現在日時の取得には"Date Time"コネクタの"Current Time"アクションを利用します。
日時の取得 | |
“Date Time"コネクタの"Current Time"アクションを選択します。 設定は必要ありません。 取得される日時はUTCです。 |
タイムゾーンと表示形式の変更
“Convert time zone"のアクションを使ってタイムゾーンを日本時間に変換します。
ファイル名に利用するためTime Unitの設定で年月日(20240811)に表示形式を変換します。
タイムゾーンとフォーマットの変更 | |
“Date Time"コネクタの"Convert time zone"アクションを選択します。 |
|
Logic Apps ワークフローの日時に関するアクションや関数についてはこちらで紹介しています。
ARMテンプレートをエクスポート
“Azure Resource Manager"コネクタにある"リソース グループ テンプレートをエクスポート"アクションを使います。
リソースIDを指定する事で、リソース単位のARMテンプレートも取得できます。
エクスポートしたARMテンプレートをBLOBコンテナーに保管
エクスポートしたARMテンプレートをストレージアカウントのBLOBコンテナーに保管します。
ファイル(BLOB)名は、"arm-export-01-日付"としています。
Logic AppsでのBLOBコンテナー操作方法についてはこちらで紹介しています。
完成したワークフロー
完成したワークフローです。
完成したワークフロー | |
“リソース グループ テンプレートをエクスポート"アクションで出力した内容を"BLOBを作成する(V2)"アクションで保管しています。 |
ワークフローを実行
ワークフローを実行して、実行履歴を確認します。
エクスポートしたARMテンプレートがBLOBコンテナーに保管されている事が確認できます。
ワークフローの実行履歴 | |
ワークフローの実行履歴から、正常終了が確認できます。 BLOBコンテナーにファイル(BLOB)が作成されている事が確認できます。 ダウンロードすると、エクスポートしたARMテンプレートを確認できます。 |
|
—広告—
エクスポートしたARMテンプレートを整形する
統合アカウントの作成
ARMテンプレートの整形には"Inline Code"コネクタの"Execute JavaScript Code"を利用します。
この場合、前提条件として統合アカウントが必要になります。
なお、統合アカウントは別途課金が発生します。
無料レベルもありますが、運用環境での利用は推奨されていません。
今回は検証目的で利用していますが、ARMテンプレートのエクスポート自体は統合アカウントなくても出来ます。
整形の処理自体はAzure Functions等でも出来ますので、利用環境や目的に応じて選択するようにします。
統合アカウント作成 | |
統合アカウントを作成します。 リージョンはLogic Appsのリソースと同じリージョンを指定します。
|
|
Logic Appsのリソースと統合アカウントを関連付け
Logic Appsで統合アカウントを利用するためには、関連付けが必要になります。
ワークフロー設定 | |
左側のメニューでワークフロー設定を選択します。 統合アカウントという設定があります。 |
JavaScriptを使ったJSON形式のファイルを整形
“Inline Code"コネクタの"Execute JavaScript Code"アクションを利用してARMテンプレートを整形します。
JavaScriptコードを利用して"リソース グループ テンプレートをエクスポート"アクションの出力内容を整形します。
JSONファイルを修正 | ||
“Inline Code"コネクタの"Execute JavaScript Code"を選択します。 ※data01に"リソース グループ テンプレートをエクスポート"で出力した値(Template)を設定しています。 |
||
|
整形したARMテンプレートをBLOBコンテナーに保管
整形したARMテンプレートをストレージアカウントのBLOBコンテナーに保管します。
ファイル(BLOB)名は、"arm-export-02-日付.json"としています。
ファイルを保管 | |
“Azure Blob Storage"コネクタで"BLOBを作成する(V2)"を選択します。 保管するストレージアカウントやBLOBコンテナーを指定します。 ※body関数を利用しています。 |
|
完成したワークフロー
完成したワークフローです。
完成したワークフロー | |
先ほどのワークフローにアクションを追加しています。 |
ワークフローを実行
ークフローを実行して、実行履歴を確認します。
“Inline Code"コネクタの"Execute JavaScript Code"アクションを利用してARMテンプレートを整形します。
エクスポートしたARMテンプレートが、整形された形でBLOBコンテナーに保管されている事が確認できます。
ワークフローの実行履歴 | |
ワークフローの実行履歴から、正常終了が確認できます。 BLOBコンテナーにファイル(BLOB)が作成されている事が確認できます。 エクスポートしたARMテンプレートが整形されている事を確認できます。 |
|
—広告—
最後に
Logic Appsを使ったARMテンプレートのエクスポート方法について確認してみました。
Logic Appのワークフローを使う事で、簡単にARMテンプレートのエクスポートからBLOBコンテナーに保管まで自動化できました。
スケジュール実行できるのでとても便利かと思いました。
引き続き色々試してみたいと思います。
PowerShellを使ったARMテンプレートエクスポート方法についてはこちらで紹介しています。