コンテンツにスキップ

Terraform Random Provider を使ってみた

Terraform の Random Provider は、ランダムな値を生成するための provider だ。文字列や数値、ランダムなペットの名前などを生成できる。

名前の重複を避ける使いどころ

lifecycle のcreate_before_destroyを指定した場合、リソースの再作成時に名前が重複してエラーになることがある。random provider を使うことで、再作成の際に名前が重複しないようにできる。

keepers

keepersに指定した値を変更すると、Terraform がリソースを再作成する。keepersには、リソースの生成に使う値を指定する。

公式ドキュメントの例ではvar.ami_idを指定している。var.ami_idを変更すると、Terraform がrandom_idリソースを再作成する。

example.tf
resource "random_id" "server" {
  keepers = {
    # Generate a new id each time we switch to a new AMI id
    ami_id = var.ami_id
  }

  byte_length = 8
}

resource "aws_instance" "server" {
  tags = {
    Name = "web-server ${random_id.server.hex}"
  }

  # Read the AMI id "through" the random_id resource to ensure that
  # both will change together.
  ami = random_id.server.keepers.ami_id

  # ... (other aws_instance arguments) ...
}

次のように keepers には複数の値を指定できる。値のどれか 1 つでも変更すると、Terraform がリソースを再作成する。

example2.tf
1
2
3
4
5
6
resource "random_id" "example" {
  keepers = {
    var1 = var.var1
    var2 = var.var2
  }
}