次の方法で共有


クイックスタート: Terraform を使用して Azure Recovery Services コンテナーを作成する

このクイックスタートでは、Terraform を使用して、Azure でファイルを共有するための Azure リソース グループ、Azure Recovery Services コンテナー、およびバックアップ ポリシーを作成する方法について説明します。 Azure Site Recovery サービスは、計画的および計画外の停止の際にビジネス アプリケーションをオンラインに保つのに役立ちます。 具体的には、Site Recovery は、レプリケーション、フェールオーバー、および回復を使用して、ディザスター リカバリー中にオンプレミスのマシンと Azure 仮想マシンを管理します。 これらの Site Recovery の方法は、事業継続とディザスター リカバリー (BCDR) 戦略に役立てることができます。

Azure Recovery Services コンテナーは、データを保護および管理できるバックアップや回復ポイントなどのデータを格納する Azure のストレージ エンティティです。 最初にコンテナーを作成し、次にファイルを共有するためのバックアップ ポリシーを作成します。このポリシーでは、バックアップを実行するタイミングと頻度、および保持期間を指定します。 このセットアップにより、データが一貫してバックアップされ、必要に応じて簡単に復元できるようになります。

Terraform を使用すると、クラウド インフラストラクチャの定義、プレビュー、およびデプロイを行うことができます。 Terraform を使用する際は、HCL 構文を使って構成ファイルを作成します。 HCL 構文では、Azure などのクラウド プロバイダーと、クラウド インフラストラクチャを構成する要素を指定できます。 構成ファイルを作成したら、"実行プラン" を作成します。これにより、インフラストラクチャの変更をデプロイ前にプレビューすることができます。 変更を確認したら、実行プランを適用してインフラストラクチャをデプロイします。

  • 一意の名前を持つ Azure リソース グループを作成します。
  • SKU 名とレベルのローカル変数を定義します。
  • リソース グループに Azure Recovery Services コンテナーを作成します。
  • リソース グループ内のファイルを共有するためのバックアップ ポリシーを作成します。
  • Recovery Services コンテナーの名前と、ファイルを共有するためのバックアップ ポリシーを出力します。

前提条件

Terraform コードを実装する

注意

この記事のサンプル コードは、Azure Terraform GitHub リポジトリにあります。 Terraform の現在および以前のバージョンのテスト結果を含むログ ファイルを表示できます。

Terraform を使用して Azure リソースを管理する方法を示すその他の記事とサンプル コードを参照してください。

  1. サンプル Terraform コードをテストして実行するディレクトリを作成し、それを現在のディレクトリにします。

  2. main.tf という名前のファイルを作成し、次のコードを挿入します。

    # Create Resource Group
    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    locals {
      skuName = "RS0"
      skuTier = "Standard"
    }
    
    # Create Recovery Services Vault
    resource "azurerm_recovery_services_vault" "vault" {
      name                = var.vaultName
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      sku                 = local.skuName
    }
    
    # Create Backup Policy for File Share
    resource "azurerm_backup_policy_file_share" "policy" {
      name                = "vaultstorageconfig"
      resource_group_name = azurerm_resource_group.rg.name
      recovery_vault_name = azurerm_recovery_services_vault.vault.name
    
      backup {
        frequency = "Daily"
        time      = "23:00"
      }
    
      retention_daily {
        count = 10
      }
    }
    
  3. outputs.tf という名前のファイルを作成し、次のコードを挿入します。

    output "recovery_services_vault_name" {
      value = azurerm_recovery_services_vault.vault.name
    }
    
    output "backup_policy_file_share_name" {
      value = azurerm_backup_policy_file_share.policy.name
    }
    
  4. providers.tf という名前のファイルを作成し、次のコードを挿入します。

    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  5. variables.tf という名前のファイルを作成し、次のコードを挿入します。

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    
    variable "vaultName" {
      description = "Name of the Recovery Services Vault."
      type        = string
      default     = "examplevault"
    }
    

Terraform を初期化する

terraform init を実行して、Terraform のデプロイを初期化します。 このコマンドによって、Azure リソースを管理するために必要な Azure プロバイダーがダウンロードされます。

terraform init -upgrade

重要なポイント:

  • -upgrade パラメーターは、必要なプロバイダー プラグインを、構成のバージョン制約に準拠する最新バージョンにアップグレードします。

Terraform 実行プランを作成する

terraform plan を実行して、実行プランを作成します。

terraform plan -out main.tfplan

重要なポイント:

  • terraform plan コマンドは、実行プランを作成しますが、実行はしません。 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。
  • 省略可能な -out パラメーターを使用すると、プランの出力ファイルを指定できます。 -out パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。

Terraform 実行プランを適用する

terraform apply を実行して、クラウド インフラストラクチャに実行プランを適用します。

terraform apply main.tfplan

重要なポイント:

  • terraform apply コマンドの例は、以前に terraform plan -out main.tfplan が実行されたことを前提としています。
  • -out パラメーターに別のファイル名を指定した場合は、terraform apply の呼び出しで同じファイル名を使用します。
  • -out パラメーターを使用しなかった場合は、パラメーターを指定せずに terraform apply を呼び出します。

結果を確認する

  1. Azure リソース グループ名を取得します。

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Azure Recovery Services コンテナー名を取得します。

    recovery_services_vault_name=$(terraform output -recovery_services_vault_name)
    
  3. Azure Recovery Services コンテナーのバックアップ ポリシー ファイル共有名を取得します。

    backup_policy_file_share_name=$(terraform output -backup_policy_file_share_name)
    
  4. az backup vault show を実行して、Azure Recovery Services コンテナーを表示します。

    az backup vault show --name $recovery_services_vault_name --resource group $resource_group_name
    

リソースをクリーンアップする

Terraform を使用して作成したリソースが不要になった場合は、次の手順を実行します。

  1. terraform plan を実行して、destroy フラグを指定します。

    terraform plan -destroy -out main.destroy.tfplan
    

    重要なポイント:

    • terraform plan コマンドは、実行プランを作成しますが、実行はしません。 代わりに、構成ファイルに指定された構成を作成するために必要なアクションを決定します。 このパターンを使用すると、実際のリソースに変更を加える前に、実行プランが自分の想定と一致しているかどうかを確認できます。
    • 省略可能な -out パラメーターを使用すると、プランの出力ファイルを指定できます。 -out パラメーターを使用すると、レビューしたプランが適用内容とまったく同じであることが確実になります。
  2. terraform apply を実行して、実行プランを適用します。

    terraform apply main.destroy.tfplan
    

Azure での Terraform のトラブルシューティング

Azure で Terraform を使用する場合の一般的な問題のトラブルシューティング

次のステップ