このトピックでは、Terraformを使用してApsaraDB for MongoDBインスタンスを作成する方法について説明します。
Terraformの詳細については、「Terraformとは何ですか?」をご参照ください。 TerraformでサポートされているApsaraDB For MongoDBリソースタイプの詳細については、「概要」をご参照ください。 また、サービスとTerraformで動作するリソースごとに、サポートされているリソースタイプを照会できます。
リソースアーキテクチャ
特定のリージョンに仮想プライベートクラウド (VPC) 、vSwitch、およびレプリカセットインスタンスを作成できます。
手順
Terraformのインストール
ローカルPCにTerraformをインストールして設定します。 詳細については、「ローカルPCでのTerraformのインストールと設定」をご参照ください。
Terraformをインストールしたら、コマンドラインインターフェイス (CLI) を開き、
terraform version
と入力します。 バージョン情報が返された場合は、Terraformがインストールされます。Terraformをインストールしない場合は、Alibaba Cloudが提供するCloud Shellを使用してください。 Cloud Shellは、Terraformに組み込みのランタイム環境を提供します。
RAMユーザーに必要な権限を付与
Terraformテンプレートを実行するには、Resource Access Management (RAM) ユーザーに必要な権限を付与する必要があります。 RAMユーザーを作成し、AccessKeyペアを取得してから、権限ポリシーをRAMユーザーにアタッチする必要があります。 サンプルTerraformテンプレートを使用して、VPC、vSwitch、およびApsaraDB for MongoDBインスタンスを作成できます。 RAMユーザーに次の権限を付与する必要があります。
AliyunVPCFullAccess: Virtual Private Cloudへのフルアクセスを提供します。
AliyunMongoDBFullAccess: ApsaraDB for MongoDBへのフルアクセスを提供します。
テンプレートの作成
main.tf
という名前のファイルを作成し、使用するインスタンスアーキテクチャに基づいて次の内容を入力します。
スタンドアロンインスタンス
# Declare the alicloud provider.
provider "alicloud" {}
# Declare a variable named name.
variable "name" {
default = "terraform-example"
}
# Specify the alicloud_mongodb_zones parameter to query zone information.
data "alicloud_mongodb_zones" "default" {
}
# Set the zone_id parameter to the ID of the last zone in the value of the alicloud_mongodb_zones parameter.
locals {
index = length(data.alicloud_mongodb_zones.default.zones) - 1
zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id
}
# Create a VPC.
resource "alicloud_vpc" "default" {
vpc_name = var.name
description = var.name
cidr_block = "172.17.3.0/24"
}
# Create a vSwitch under the VPC in the zone specified by the local.zone_id parameter.
resource "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
}
# Use the VPC and vSwitch to create a standalone resource.
resource "alicloud_mongodb_instance" "singleNode" {
engine_version = "4.0"
db_instance_class = "dds.sn4.xlarge.1"
db_instance_storage = 20
vswitch_id = alicloud_vswitch.default.id
zone_id = local.zone_id
security_ip_list = [
"10.168.1.12",
"100.69.7.112"
]
name = var.name
storage_type = "cloud_essd1"
tags = {
Created = "TF"
For = "example"
}
}
alicloud_mongodb_instance
リソースタイプの設定方法の詳細については、「alicloud_mongodb_instance」をご参照ください。
レプリカセットインスタンス
# Declare the alicloud provider.
provider "alicloud" {}
# Declare a variable named name.
variable "name" {
default = "terraform-example"
}
# Specify the alicloud_mongodb_zones parameter to query zone information.
data "alicloud_mongodb_zones" "default" {
}
# Set the zone_id parameter to the ID of the last zone in the value of the alicloud_mongodb_zones parameter.
locals {
index = length(data.alicloud_mongodb_zones.default.zones) - 1
zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id
}
# Create a VPC.
resource "alicloud_vpc" "default" {
vpc_name = var.name
description = var.name
cidr_block = "172.17.3.0/24"
}
# Create a vSwitch under the VPC in the zone specified by the local.zone_id parameter.
resource "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
}
# Use the VPC and VSwitch to create a replica set resource.
resource "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 = {
Created = "TF"
For = "example"
}
}
alicloud_mongodb_instance
リソースタイプの設定方法の詳細については、「alicloud_mongodb_instance」をご参照ください。
シャードクラスタインスタンス
# Declare the alicloud provider.
provider "alicloud" {}
# Declare a variable named name.
variable "name" {
default = "terraform-example"
}
# Specify the alicloud_mongodb_zones parameter to query zone information.
data "alicloud_mongodb_zones" "default" {
}
# Set the zone_id parameter to the ID of the last zone in the value of the alicloud_mongodb_zones parameter.
locals {
index = length(data.alicloud_mongodb_zones.default.zones) - 1
zone_id = data.alicloud_mongodb_zones.default.zones[local.index].id
}
# Create a VPC.
resource "alicloud_vpc" "default" {
vpc_name = var.name
description = var.name
cidr_block = "172.17.3.0/24"
}
# Create a vSwitch under the VPC in the zone specified by the local.zone_id parameter.
resource "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
}
# Use the VPC and VSwitch to create a sharded cluster resource.
resource "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 = {
Created = "TF"
For = "Example"
}
}
alicloud_mongodb_sharding_instance
リソースタイプの設定方法の詳細については、「alicloud_mongodb_sharding_instance」をご参照ください。
テンプレートの実行時に指定されたパラメーターが見つからないことを示すエラーが返された場合は、terraform version
コマンドを実行して、Terraformの現在のバージョンが正式バージョンと同じかどうかを確認できます。 現在のバージョンが最新バージョンでない場合は、次の文を実行して、main.tf
ファイルのprovider "alicloud" {}
フィールドに最新バージョンを指定する必要があります。 Terraformの公式バージョンの詳細については、「alicloud_mongodb_instance」をご参照ください。
provider "alicloud" {version = "~> v*.***.*"}
v *.***.*
を最新のバージョン番号に置き換えます。
テンプレートの実行
ロードされたプロバイダー、プロバイダー、モジュールの構成ファイルなど、Terraform構成ファイルを初期化します。
terraform init
テンプレートの構文が正しいかどうかを確認します。
terraform validate
実行プランを作成します。
terraform plan
テンプレートをデプロイします。
terraform apply
デプロイ情報はログに記録されます。
はいと入力してリソースを変更します。
テンプレートから作成されたリソースを解放します。
terraform destroy
はいと入力してリソースを破棄します。