1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Alibaba Cloud] TerraformでマルチゾーンRDSを作成

Last updated at Posted at 2019-06-30

Alibaba CloudでTerraformを使って、マルチゾーンRDSを作成するサンプルを以下に記載します。
なお、ひとまず、パスワードとか雑に書いていますが、そこはスルーでお願いします。

サンプル設定

vpc.tf
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"
}
rds.tf
# データベース用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とは違うところを多く発見しますね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?