Alibaba CloudでTerraformを使って、マルチゾーンRDSを作成するサンプルを以下に記載します。
なお、ひとまず、パスワードとか雑に書いていますが、そこはスルーでお願いします。
サンプル設定
provider "alicloud" {
region = "ap-northeast-1"
}
resource "alicloud_vpc" "vpc" {
name = "VPC"
description = "Aliyun VPC"
cidr_block = "172.16.0.0/16"
}
resource "alicloud_vswitch" "vsw" {
vpc_id = "${alicloud_vpc.vpc.id}"
name = "VSw"
description = "Aliyun VSwitch"
cidr_block = "172.16.1.0/24"
availability_zone = "ap-northeast-1a"
}
# データベース用SLBが属するVSwitch
resource "alicloud_vswitch" "rds_slb" {
vpc_id = "${alicloud_vpc.vpc.id}"
name = "rds_slb"
description = "RDS VSwitch"
cidr_block = "172.16.11.0/24"
availability_zone = "ap-northeast-1a"
}
# データベースインスタンス
resource "alicloud_db_instance" "instance" {
engine = "MySQL"
engine_version = "5.6"
instance_type = "rds.mysql.s2.large"
instance_storage = "30"
instance_charge_type = "Postpaid"
instance_name = "instance"
vswitch_id = "${alicloud_vswitch.rds_slb.id}"
zone_id = "ap-northeast-1MAZ1(a,b)"
monitoring_period = "60"
security_ips = ["172.16.1.0/24"]
}
# データベースのアカウント
resource "alicloud_db_account" "account" {
instance_id = "${alicloud_db_instance.instance.id}"
name = "tf_account"
password = "Test12345"
}
# データベースアカウントの権限
resource "alicloud_db_account_privilege" "default" {
instance_id = "${alicloud_db_instance.instance.id}"
account_name = "tf_account"
privilege = "ReadOnly"
db_names = ["${alicloud_db_database.base.*.name}"]
}
# データベース
resource "alicloud_db_database" "base" {
instance_id = "${alicloud_db_instance.instance.id}"
name = "tf_database"
character_set = "utf8"
}
設定ポイント
マルチゾーンの指定
私はこの書き方がわからず、ハマりました。
zone_idに複数の値を入れることはできず、どう設定すればいいのやらと。。。
東京リージョンの場合は、zone_id = "ap-northeast-1MAZ1(a,b)"
と書く必要がありました。
aliyun rds DescribeRegions
とAlibaba Cloud CLIで確認すると、選択肢がわかります。
他にもcn-hangzhou-MAZ10(h,i)とかcn-shanghai-MAZ1(b,c)とかありますね。
APIを用いてAlibaba Cloudリソースを自動構築する⑤ - RDS編も参考になりました。
SLBが自動的に作成される
alicloud_db_instanceの中で、vswitch_idを指定する必要があります。
ここで指定するvswitchにRDSインスタンスが作成されるのかと思っていたのですが、そうではありませんでした。
ここにはRDS用のSLBが作成されます。
RDSの構成に関しては、Alibaba Cloud マルチゾーン設計 #3 RDS編がとても参考になります。
感想
ap-northeast-1MAZ1(a,b)
にたどり着くまでに3時間くらいかかりました。
最終的にコンソールでRDSをマルチゾーンで作成し、terraform import して、気がつきました。今後もハマりそうになったら使ってみたいと思います。
実際に手を動かしてやってみると、AWSとは違うところを多く発見しますね。