PowerShellでARMテンプレートをエクスポート

2020-04-22Application Gateway,ARM Template,Azure,PowerShell/Azure CLI

PowerShellでARMテンプレートのエクスポートをやってみました。
アプリケーションゲートウェイ(Azure Application Gateway)を例に試しています。
Export-AzResourceGroupコマンドレットでリソースIDを指定してARMテンプレートのエクスポートをしています。
エクスポートされたARMテンプレートはjson形式のファイルとして保管します。

スポンサーリンク

PowerShellを使ったARMテンプレートエクスポート

テンプレートのエクスポートはExport-AzResourceGroup

ARMテンプレートのエクスポートにはExport -AzResourceGroupコマンドレットを使います。

Export-AzResourceGroup

リソースグループ単位やリソース単位でARMテンプレートをエクスポートする事が出来ます。
エクスポートされたARMテンプレートはJson形式でファイル保管する事が出来ます。

リソース単位のエクスポート

リソース単位でエクスポートする場合はExport -AzResourceGroupコマンドレットでリソースIDを指定します。
アプリケーションゲートウェイ(Azure Application Gateway)でリソースIDを取得する場合はGet-AzApplicationGatewayを利用します。

    • サンプル
      • アプリケーションゲートウェイ名:agw-test-01
      • アプリケーションゲートウェイのリソースグループ:RG-AGW-TEST-01

PS C:> $rg = “アプリケーションゲートウェイのリソースグループ名"
PS C:> $agwname = “アプリケーションゲートウェイ名"
PS C:>
Get-AzApplicationGateway -Name $agwname -ResourceGroupName $rg |fl Name, Id

Name : agw-test-01
Id : /subscriptions/サブスクリプションID/resourceGroups/RG-AGW-TEST-01/providers/Microsoft.Network/applicationGateways/agw-test-01

この取得したリソースIDを利用してPowerShellを作ってみます。
Export-AzResourceGroupコマンドレットでは保管先のディレクトリを指定します。
-Resourceのパラメータでエクスポート対象のリソースIDを指定します。
今回はGet-AzApplicationGatewayで取得したリソースIDを利用します。

#ARM Template Export(アプリケーションゲートウェイ)
#取得するアプリケーションゲートウェイ
$rg = “アプリケーションゲートウェイのリソースグループ名"
$agwname = “アプリケーションゲートウェイ名"

#ARM Template保管先ディレクトリ
$templatePath =“保管先ディレクトリのパス(例 C:\temp)"

#Getコマンドで情報取得
$agw = Get-AzApplicationGateway -Name $agwname -ResourceGroupName $rg

#テンプレートをエクスポートする
Export-AzResourceGroup `
-ResourceGroupName $rg `
-Resource $agw.Id`
-Path $templatePath

適当な名前を付けてPowerShellを保管します。
これを実行するとARMテンプレートをエクスポート出来ます。

テンプレートエクスポート結果

ARMテンプレートファイルは指定した保管先ディレクトリパスにリソースグループ名.jsonと言うファイル名で出力されます。

出力例

パラメータを含む場合

デフォルトではエクスポートされたARMテンプレートにはパラメータは含まれません。
パラメータも一緒にエクスポートする場合は、Export-AzResourceGroupコマンドレットに-IncludeParameterDefaultValueパラメータを追加します。

#ARM Template Export(アプリケーションゲートウェイ)
#取得するアプリケーションゲートウェイ
$rg = “アプリケーションゲートウェイのリソースグループ名"
$agwname = “アプリケーションゲートウェイ名"

#ARM Template保管先ディレクトリ
$templatePath =“保管先ディレクトリのパス(例 C:\temp)"

#Getコマンドで情報取得
$agw = Get-AzApplicationGateway -Name $agwname -ResourceGroupName $rg

#テンプレートをエクスポートする
Export-AzResourceGroup `
 -ResourceGroupName $rg `
 -Resource $agw.Id`
 -IncludeParameterDefaultValue `
 -Path $templatePath

最後に

今回はPowerShellでARMテンプレートのエクスポートを、アプリケーションゲートウェイ(Azure Application Gateway)例にやってみました。
Export-AzResourceGroupコマンドレットでARMテンプレートをエクスポートする事が出来ました。
リソースによってはすべての情報がエクスポート出来る訳ではありませんが、設定のバックアップや確認等で利用出来るので便利かと思いました。

ARMテンプレートのダウンロードからカスタムデプロイまでについてはこちらに纏めています。
仮想マシン(Azure VM)を例に試しています。

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

アプリケーションゲートウェイ(Azure Application Gateway)の構築手順纏めはこちら。

スポンサーリンク