すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:Terraformを使用したApsaraDB for MongoDBの統合

最終更新日:Jun 12, 2024

このトピックでは、Terraformを使用してApsaraDB for MongoDBレプリカセットインスタンスを作成する方法について説明します。

Terraformの詳細については、Terraformとは何ですか? TerraformでサポートされているMongoDBリソースタイプの詳細については、「概要」をご参照ください。 また、サービスとTerraformで動作するリソースごとに、サポートされているリソースタイプを照会できます。

リソースアーキテクチャ

image.png

特定のリージョンに仮想プライベートクラウド (VPC) 、vSwitch、およびMongoDBレプリカセットインスタンスを作成できます。

手順

Terraformのインストール

  • ローカルPCにTerraformをインストールして設定します。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。

    Terraformをインストールしたら、コマンドラインインターフェイス (CLI) を開き、terraform versionと入力します。 バージョン情報が返された場合、Terraformは正常にインストールされます。

  • Terraformをインストールしない場合は、Alibaba Cloudが提供するCloud Shellを使用してください。 Cloud Shellは、Terraformに組み込みのランタイム環境を提供します。 詳細については、「Cloud Shell」をご参照ください。

RAMユーザーに必要な権限を付与

Terraformテンプレートを実行するために必要なResource Access Management (RAM) ユーザー権限を付与する必要があります。 RAMユーザーを作成し、AccessKeyペアを取得してから、権限ポリシーをRAMユーザーにアタッチする必要があります。 サンプルTerraformテンプレートを使用して、仮想プライベートクラウド (VPC) 、vSwitch、およびMongoDBインスタンスを作成できます。 RAMユーザーに次の権限を付与する必要があります。

  • AliyunVPCFullAccess: Virtual Private Cloudへのフルアクセスを提供します。

  • AliyunMongoDBFullAccess: ApsaraDB for MongoDBへのフルアクセスを提供します。

テンプレートの作成

main.tfという名前のファイルを作成し、ファイルに次の内容を入力します。

# alicloudプロバイダーを宣言します。
プロバイダー "alicloud" {}

# nameという名前の変数を宣言します。
変数 "name" {
  default = "terraform-example"
}

# alicloud_mongodb_zonesパラメーターを指定して、ゾーン情報を照会します。
data "alicloud_mongodb_zones" "default" {
  
}

# zone_idパラメーターをalicloud_mongodb_zonesパラメーターの値の最後のゾーンのIDに設定します。
locals {
  index = length(data.alicloud_mongodb_zones.default.zones) - 1
  zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id
}

# VPCを作成します。
リソース "alicloud_vpc" "default" {
  vpc_name = var.name
  description = var.name
  cidr_block = "172.17.3.0/24"
}

# local.zone_idパラメーターで指定されたゾーンのVPCの下にvSwitchを作成します。
リソース "alicloud_vswitch" "default" {
  vswitch_name = var.name
  cidr_block = "172.17.3.0/24"
  vpc_id = alicloud_vpc.default.id
  zone_id = local.zone_id
}

# 上記のVPCおよびvSwitchでレプリカセットインスタンスを作成します。
リソース "alicloud_mongodb_instance" default "{
  engine_version = "5.0"
  db_instance_class = "mdb.shard.2x.xlarge.d"
  db_instance_storage = 20
  vswitch_id = alicloud_vswitch.default.id
  security_ip_list = ["10.168.1.12", "100.69.7.112"]
  name = var.name
  tags = {
    作成="TF"
    ="example" の場合
  }
}


# 上記のVPCおよびvSwitchでクラウドディスクを使用するシャードクラスターインスタンスを作成します。
リソース "alicloud_mongodb_sharding_instance" "default" {
  engine_version = "7.0"
  vswitch_id = alicloud_vswitch.default.id
  name = var.name
  zone_id = local.zone_id
  mongo_list {
    node_class = "mdb.shard.2x.large.c"
  }
  mongo_list {
    node_class = "mdb.shard.2x.large.c"
  }
  shard_list {
    node_class = "mdb.shard.2x.large.c"
    node_storage = "20"
  }
  shard_list {
    node_class = "mdb.shard.2x.large.c"
    node_storage = "20"
    readonly_replicas = "1"
  }
  config_server_list {
    node_class ="mdb.shard.2x.large.c"
    node_storage = "20"
  }
  tags = {
    作成="TF"
    ="例" の場合
  }
}

alicloud_mongodb_instanceリソースタイプの設定の詳細については、「alicloud_mongodb_instance」をご参照ください。

説明

テンプレートの実行時に指定されたパラメーターが見つからないことを示すエラーが返された場合は、terraform versionコマンドを実行して、Terraformの現在のバージョンが正式バージョンと同じかどうかを確認できます。 現在のバージョンが最新バージョンでない場合は、次の文を実行して、main.tfファイルのprovider "alicloud" {} フィールドに最新バージョンを指定する必要があります。 Terraformの公式バージョンの詳細については、「alicloud_mongodb_instance」をご参照ください。

プロバイダー "alicloud" {version = "~> v *.***.*"}

v *.***.* を最新のバージョン番号に置き換えます。

テンプレートの実行

  1. ロードされたプロバイダー、プロバイダー、モジュールの構成ファイルなど、Terraform構成ファイルを初期化します。

    terraform init

    image

  2. テンプレートの構文が正しいかどうかを確認します。

    terraform validate

    image

  3. 実行プランを作成します。

    terraform plan

    7dee7a7bdb291024a81457306cec277c

  4. テンプレートをデプロイします。

    terraform apply

    image.png

    デプロイ情報はログに記録されます。

    image

    はいと入力してリソースを変更します。

  5. テンプレートから作成されたリソースを解放します。

    terraform destroy

    imageimageはいと入力してリソースを破棄します。