このトピックでは、Terraformを使用してApsaraDB for MongoDBレプリカセットインスタンスを作成する方法について説明します。
Terraformの詳細については、Terraformとは何ですか? TerraformでサポートされているMongoDBリソースタイプの詳細については、「概要」をご参照ください。 また、サービスとTerraformで動作するリソースごとに、サポートされているリソースタイプを照会できます。
リソースアーキテクチャ
特定のリージョンに仮想プライベートクラウド (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 *.***.*
を最新のバージョン番号に置き換えます。
テンプレートの実行
ロードされたプロバイダー、プロバイダー、モジュールの構成ファイルなど、Terraform構成ファイルを初期化します。
terraform init
テンプレートの構文が正しいかどうかを確認します。
terraform validate
実行プランを作成します。
terraform plan
テンプレートをデプロイします。
terraform apply
デプロイ情報はログに記録されます。
はいと入力してリソースを変更します。
テンプレートから作成されたリソースを解放します。
terraform destroy
はいと入力してリソースを破棄します。