ARMテンプレートを利用してリソースを複製してみました。
ストレージアカウントをテンプレートから複製する
今回は以下の記事で作成したストレージアカウントを複製します。
このストレージではコンテナーにblobがあり、ライフサイクルの管理が有効化されているストレージアカウントです。
1.テンプレートをエクスポート(コピー)
・該当のリソースに移動し [テンプレートのエクスポート] を選択して出てくるテンプレートをすべてコピーします。
2.カスタムテンプレートからデプロイ
・AzureポータルのTOPページから [リソースの作成] をクリックして、[テンプレートのデプロイ (カスタム テンプレートを使用してデプロイ)] を選択します。
※この項目が見当たらない場合には検索して選択してください。
・[エディターで独自のテンプレートを作成する] を選択します。
・「テンプレートの編集」画面が開くので先ほどコピーしたテンプレートをペーストし、保存を押します。
・デプロイ画面に戻るので、サブスクリプション、リソースグループ、リージョン、リソース名を入力し作成します。
デフォルトでは既存と同じリソース名が選択されていますが、ストレージアカウントは一意のリソース名を求められるためエラー表示されます。
なのでストレージアカウント名は変更することになります。
作成したらストレージアカウントの複製は以上です。
複製されたストレージアカウントを確認する
複製されたストレージアカウントがどの設定まで複製されているのかを確認します。
テンプレートはリソース名以外同じ設定
新しく作成したストレージでもテンプレートを取得して比較してみます。
以下の記事でも紹介している Compare-Object を利用して比較します。
すると、見づらいですが、テンプレートの比較による変更箇所はリソース名のみであることが分かりました。
PS C:\> Compare-Object -ReferenceObject @(Get-Content -Path .\sa8697458.txt) -DifferenceObject @(Get-Content -Path .\sa9999999.txt)
InputObject SideIndicator
----------- -------------
"storageAccounts_satestlifecycle9999999_name": { =>
"defaultValue": "satestlifecycle9999999", =>
"name": "[parameters('storageAccounts_satestlifecycle9999999_name')]", =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default/insights-logs-networksecuritygroupevent')]", =>
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle9999999_name'), 'default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default/insights-logs-networksecuritygrouprulecounter')]", =>
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle9999999_name'), 'default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"name": "[concat(parameters('storageAccounts_satestlifecycle9999999_name'), '/default/testcontainer01')]", =>
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle9999999_name'), 'default')]", =>
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle9999999_name'))]" =>
"storageAccounts_satestlifecycle8697458_name": { <=
"defaultValue": "satestlifecycle8697458", <=
"name": "[parameters('storageAccounts_satestlifecycle8697458_name')]", <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default/insights-logs-networksecuritygroupevent')]", <=
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle8697458_name'), 'default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default/insights-logs-networksecuritygrouprulecounter')]", <=
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle8697458_name'), 'default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
"name": "[concat(parameters('storageAccounts_satestlifecycle8697458_name'), '/default/testcontainer01')]", <=
"[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_satestlifecycle8697458_name'), 'default')]", <=
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_satestlifecycle8697458_name'))]" <=
PS C:\>
コンテナーに格納されたblobは複製できない
次にコンテナーのblobを確認してみますが、blobは複製されていませんでした。
blobの複製はできず、あくまでAzureリソースのストレージアカウントを作成するようです。
ライフサイクル管理の設定は複製できない
また、ライフサイクル管理の設定を入れていましたが、ライフサイクル管理の設定は複製されていませんでした。
ライフサイクル管理の設定内容はテンプレート内では存在しないので、複製ができなかったのだとと思います。
ですので、他のリソースでもテンプレートに含まれていない設定項目はテンプレートからのデプロイでは複製できないものと推察できます。