1
0

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 1 year has passed since last update.

Terraformでoutputを利用してAuroraの最初に作られるinstanceをWriterにする

Posted at

結論

何の成果も!!得られませんでした.png

環境

AmazonLinux2
Terraform 1.3.5
registry.terraform.io/hashicorp/aws v3.75.2

やりたいこと

Aurora構築をTerraformから行う際に、はじめに作成されるinstanceを確実にWriterで作成できるようにしたい。
その後作成されるinstanceはReaderで複数AZにまたがるようにする。

想定

これまでcountで複数のinstanceを作成していたのをmasterreplicaとしてリソースを分けてreplicacluster_identifierはoutputから取得した値を設定することでmasterinstanceはWriter、replicaはReaderで作成されるのでは?

先にシングルインスタンスとしてAuroraが作成されるだろうからもちろんWriterinstanceができる、その後はReaderinstanceができて、そこでAZを分散させることで指定したAuroraが構築できるはず!!

ディレクトリ構成

.
├── environment
│   ├── main.tf
│   ├── output.tf
│   └── valiavles.tf
├── shared
│   └── modules
│       └── aurora
│             ├── main.tf
│             └── valiavles.tf

countでの作成

resource "aws_rds_cluster" "example_cluster" {
  cluster_identifier = var.example_identifier
  ~
}

resource "aws_rds_cluster_instance" "example_instance" {
  count = 3
  cluster_identifier = aws_rds_cluster.example_cluster.cluster_identifier
  ~
}

outputから値を取得

resource "aws_rds_cluster" "example_cluster" {
  cluster_identifier = var.example_identifier
  ~
}

resource "aws_rds_cluster_instance" "example_master_instance" {
  cluster_identifier = aws_rds_cluster.example_cluster.cluster_identifier
  ~
}

resource "aws_rds_cluster_instance" "example_replica_instance" {
  // environmentで取得したoutputを設定する
  cluster_identifier = var.cluster_identifier
  ~
}

// environment/output.tf
output "cluster_identifier" {
  value = aws_rds_cluster.example.cluster_identifier
}

結果

// 1回目 お!できたのか!?
cluster
 - instanceA:Writer:1a
 - instanceB:Reader:1c
 - instanceC:Reader:1a

// 2回目 いいじゃん!!
cluster
 - instanceA:Writer:1a
 - instanceB:Reader:1c
 - instanceC:Reader:1a

// 3回目 だめじゃん、、。
cluster
 - instanceA:Reader:1a
 - instanceB:Reader:1a
 - instanceC:Writer:1c

結果としてやりたいことはできませんでした。
AWS側でよしなにやってくれるっぽいのでそこだよりなのかな。
何も成果を得られないと言いましたが、outputを使ったのは初めてだったので勉強になりました。

おまけ

CLI上でproviderのversionを確認する

terraform providers -version
Terraform v1.0.5
on linux_amd64
+ provider registry.terraform.io/hashicorp/aws v3.28.0

Your version of Terraform is out of date! The latest version
1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?