ARMテンプレートを使ってAzure Recovery Services コンテナーをデプロイ

ARM Template,Azure,Bcakup(Recovery Services)

Azure Recovery Services コンテナーはAzure VM等のバックアップやリストアに使用されるAzureのサービスです。

色々な機能が提供されていますので、機能内容はマイクロソフト公式サイトでご確認下さい。自分はシンプルにバックアップソフトとバックアップストレージがセットで提供されるサービスと理解しています。

Recovery Services コンテナーの概要(公式サイト)

今回は、Azure Recovery Services コンテナー作成を、Azure PortalとAzure Resource Manager(ARM)テンプレートを利用して実施してみました。

Azure Portalで実施した内容を踏まえて、ARMテンプレートでのデプロイをやっていみました。

ARMテンプレートを使ってデプロイするにあたっては、以下の3つのファイルを作成しています。

      • Azure Recovery Services コンテナーを定義するARMテンプレート(JSONファイル)
      • Azure Recovery Services コンテナーのパラメータを指定するCSV
      • ARMテンプレートをデプロイするPower Shell

ARMテンプレートを使った場合は、複数のコンテナーを一括でデプロイできるようにパラメータをCSVから読み込むようにしています。

作成したものはGitHubにも公開しております。

今回はRecovery Services コンテナーの作成のみを実施しております。Azure VMのバックアップからリストアまでの一連の流れはこちら。

スポンサーリンク

Azure Portal上でRecovery Services コンテナーを新規作成する

Azure Portalを利用したRecovery Services コンテナーを作成は以下の手順で実施しました。

      • Recovery Services コンテナーの作成
      • バックアップ ストレージの冗長選択(ローカル冗長ストレージ (LRS) と Geo 冗長ストレージ (GRS))
      • 論理削除(14日間保持)、物理削除(即時削除)の選択

バックアップストレージの冗長選択はバックアップ設定した後では変更不可である為最初に設定します。また、論理削除にしておくと、Recovery Services コンテナーが削除が論理的にデータ保存されている14日間出来なくなります。その為必要に応じて設定変更します。

Azure Portalを利用した作成手順はマイクロソフト公式サイトを進めました。

Recovery Services コンテナーを作成して構成する(公式サイト)

最初に、Recovery Services コンテナーの作成を行います。

Azure Portal上のすべてのサービスでRecoveryと入力すると、Recovery Services コンテナーのメニューが表示されれますのでこれを選択します。

Recovery Services コンテナーに移動しますので、+追加をクリックします。

一般的な使い方で指定するのは、以下の内容になるかと思います。実際に利用するリソースに合わせて設定します。

      • リソースグループ
      • 資格情報コンテナー名(名前ですね。)
      • リージョン
      • タグ(プレビューで追加になってました。)

まず、リソースグループ、資格情報コンテナー名、リージョンを選択し、次へクリックします。

次にタグの設定を必要に応じて実施します。

設定したら、確認および作成をクリックします。確認画面が表示されますので、作成をクリックします。Recovery Services コンテナーが作成されます。

Recovery Services コンテナーで作成後に、最初にやるべき設定として2つあります。利用環境に応じて適時設定します。

      • 冗長設定(Geo冗長→ローカル冗長)
      • セキュリティ設定(論理削除→物理削除)

作成したRecovery Services コンテナーのメニューにあるプロパティを選択します。

バックアップ構成という項目が表示されているかと思います。ここで更新をクリックします。下記画面が表示されます。ストレージレプリケーションの種類を選択します。

デフォルトGeo冗長になっております。

別リージョンにリカバリするやDCが全部吹っ飛んでもリカバリするんだ、というような別リージョンに保管する要件が無い場合はローカル冗長(LRS)に変更します。

マイクロソフト様のサイトを見て頂ければわかりますが、料金が2倍違います。(保管場所が2重になるので、容量も2倍。という事で料金も2倍という事だと思います。。。)

Azure Backup の価格(公式サイト)

設定変更した場合は、忘れずに保存します。

次に、セキュリティ設定を行います。

即時物理削除したい場合は、論理削除を無効に設定します。こちらは後からでも変更可能です

設定変更した場合は保存します。論理削除の保存期間は14日間固定のようで変更はできないようです。

Recovery Services コンテナーのAzure Resource Manager(ARM)テンプレート

マイクロソフト公式サイトで公開されているARMテンプレートを参考にし、デフォルト値のみを変更しています。

azure-quickstart-templates(公式サイト)

ARM テンプレートを使用して Recovery Services コンテナーを作成する(公式サイト)

基本は参考通りなのですが、以下の点だけ修正しています。

    • バックアップ構成のデフォルト値をローカル冗長になるようにしています。
    • バックアップアラート部分等は設定してません。
    • TAGの設定はしていません。
    • 論理削除はデフォルトの通り有効になります。(無効にする方法が見当たりませんでした。)

skuNameと、skuTierは固定値になります。その為、Parametersの指定ではなく、variablesでの指定としています。

ARMテンプレートでは、バックアップポリシーの規定をしてませんが、Azure Portalを利用して作成した時と同様に、HourlyLogBackupとDefaultPolicyは作成されます。

Recovery Services コンテナーのARMテンプレートはこういう形になりました。

{
  “$schema": “https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  “contentVersion": “1.0.0.0",
  “parameters": {
    “vaultName": {
      “type": “string",
      “metadata": {}
   },
    “changeStorageType": {
      “type": “bool",
      “defaultValue": true ,
      “metadata": {}
    },
    “vaultStorageType": {
      “type": “string",
      “defaultValue": “LocallyRedundant",
      “allowedValues": [
        “LocallyRedundant",
        “GloballyRedundant"
      ],
      “metadata": {}
    },
    “location": {
      “type": “string",
      “defaultValue": “[resourceGroup().location]",
      “metadata": {}
    }
  },
  “variables": {
    “skuName": “RS0",
    “skuTier": “Standard"
  },
 “resources": [
   {
     “type": “Microsoft.RecoveryServices/vaults",
     “apiVersion": “2018-01-10",
     “name": “[parameters('vaultName’)]",
     “location": “[parameters('location’)]",
     “sku": {
       “name": “[variables('skuName’)]",
       “tier": “[variables('skuTier’)]"
     },
   “properties": {}
   },
   {
     “condition": “[parameters('changeStorageType’)]",
     “type": “Microsoft.RecoveryServices/vaults/backupstorageconfig",
     “apiVersion": “2018-01-10",
     “name": “[concat(parameters('vaultName’), '/vaultstorageconfig’)]",
     “dependsOn": [
         “[resourceId('Microsoft.RecoveryServices/vaults/’, parameters('vaultName’))]"
     ],
     “properties": {
         “StorageModelType":"[parameters('vaultStorageType’)]"
     }
   }
 ]
}

Azure Recovery Services コンテナーのパラメータ設定CSVを作成

Azure Recovery Services コンテナーを作成する為にCSVから読み込むパラメータは以下の通りになります。リソースグループ名はデプロイ先のリソースグループ名になります。

    • リソースグループ(ResourceGroupName)
    • リージョン(location)
    • コンテナー名(vaultName)
    • ストレージの種類の変更(changeStorageType)
    • コンテナー ストレージの種類(vaultStorageType)

ストレージの種類の変更と、コンテナーストレージの種類の組み合わせは下記の通りになります。

    • ローカル冗長の場合は、changeStorageTypeをTrue、vaultStorageTypeをLocallyRedundantに指定します。
    • Geo冗長のの場合は、changeStorageTypeをfalse、vaultStorageTypeをGloballyRedundantに指定します。

上記を踏まえてCSVをサンプルで作成以下のようになります。

RG1にローカル冗長、RG2にGeo冗長でデプロイする想定にしています。

ResourceGroupName,location,vaultName,changeStorageType,vaultStorageType
RG1,japaneast,rsc-01,true,LocallyRedundant
RG2,japanwest,rsc-02,false,GloballyRedundant

Azure Recovery Services コンテナーをARMテンプレート+Power Shell使ってデプロイ

ARMテンプレートのパス、CSVのパスを指定してデプロイを実施します。

changeStorageTypeについては、bool形式である為そのままCSVを読み込むとエラーになりました。調べた結果、明示的にBool指定が必要だという事がわかりましたので、# Bool Value行でStriingからBoolに変換しエラーにならないようにしています。

#RecoveryServicesコンテナー Template Deploy

$TemplateFilePath = “ARMテンプレートファイルのパス"
$ImportCSVPath = “パラメータを指定するCSVファイルのパス"

# Inclued Configure Entries
$csv = Import-Csv -path $ImportCSVPath 

# Template Deploy
foreach( $c in $csv ){

# Bool Value
[Bool]$boolValue = [System.Convert]::ToBoolean($c.changeStorageType)

# Deploy Command
New-AzResourceGroupDeployment `
  -ResourceGroupName $c.ResourceGroupName `
  -TemplateFile $TemplateFilePath `
  -location $c.location `
  -changeStorageType $boolValue `
  -vaultStorageType $c.vaultStorageType `
  -vaultName $c.vaultName
}

デプロイが成功すると、Power Shellの実行ログにProvisioningState : Succeededと表示され、実際にAzure Portal上で確認すると設定通り出来ている事が確認できました。

ARMテンプレートを使った場合は、論理削除の設定は有効になっています。

スポンサーリンク