Yugabyte Anywhere Terraform Provider は、YugabyteDB Anywhere (YBA) のリソースを管理するための Terraform Provider
です。 この記事では Terraform を使用して、AWS の複数リージョンにまたがる YugabyteDB
をデプロイする手順を紹介します。
必要なもの
この記事の手順で必要なものは次のとおりです。
- AWS Account
- Terraform 1.8.x
- YBA のライセンスファイル
YBA は有償プロダクトのため、ライセンスが必要です。
AWS リソースの準備
YBA をセットアップして Universe(≒ クラスター)を AWS の複数リージョンにまたがってデプロイするためには、事前に次のリソースを準備する必要があります。
- YBA をデプロイする VPC と Subnet
- ノードをデプロイする VPC と Subnet(リージョンごと)
- YBA と各リージョンのノード間の VPC Peering
- 各リージョンのノード間の VPC Peering
- YBA の Security Group
- ノードの Security Group(リージョンごと)
- YBA の EC2 にアタッチする IAM Role
- ノードの EC2 にアタッチする IAM Role
- YBA の Key Pair
- YBA をインストールする EC2
今回は 3 つのリージョンにまたがって Universe を作成するため、次のように Provider を定義します。
Tokyo (ap-northeast-1) と N. Virginia (us-east-1) と London (eu-west-2) を使ってみることにします。
YBA をデプロイするための VPC を作成します。
Universe をデプロイするための VPC を作成します。
同じように us-east-1 と eu-west-2 にも VPC を作成します。あとで VPC Peering を作成するため、VPC の CIDR は被らないようにします。
次に YBA ↔ ノード間の VPC Peering を作成します。
3 つのリージョンのノード間の VPC Peering を作成します。
同じように us-east-1 ↔ eu-west-2 と eu-west-2 ↔ ap-northeast-1 の VPC Peering も作成します。
次に YBA の Security Group を作成します。VPC Peering を利用した通信なので、すべてのポートを許可していますが、細かく制御したい場合は、次の URL に YBA の通信要件の記載があります。
YugabyteDB Anywhere networking requirements | YugabyteDB Docs
ノードの Security Group を作成します。
同じように us-east-1 と eu-west-2 にも Security Group を作成します。
次に YBA の EC2 にアタッチする IAM Policy を作成します。
YBA は EC2 を動的に作成するため、EC2 に関連する Permission が必要になります。
ノードの EC2 にアタッチする IAM Role を作成します。
YBA の EC2 に設定する Key Pair を作成します。
YBA をインストールする EC2 を作成します。
YBA のインストール
さて、ようやくここで、YugabyteDB Anywhere Terraform Provider の登場です。
provider.yba
に YBA の IP アドレスを設定します。
resource.yba_installer
を使用すると、EC2 に対して YBA のインストールを実行できます。
インストールが完了したら YBA の Web Console (https://<YBA IP ADDRESS>) にアクセスしてユーザーを登録します。
Universe の作成
新しく provider.yba
を定義します。api_token
は YBA Web Console で生成します。
Cloud Provider を作成します。
resource.yba_universe
を定義して Universe を作成します。
YBA の Web Console で進捗を確認してみましょう。
最後のステップまで完了すれば Multi-region Universe の完成です 🎉🎉