コンテンツにスキップ

Terraform Random Provider を使ってみた

Terraform の Random Provider は、ランダムな値を生成するための provider。文字列や数値、ランダムなペットの名前などを生成できる。lifecycle のcreate_before_destroyが指定されている場合にリソースの再作成が実行されると名前が重複してエラーになることがある。random provider を使うことで、再作成の際に名前が重複しないようにできる。

keepers

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

公式ドキュメントの例ではvar.ami_idを指定しているが、var.ami_idが変更されると、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 つでも変更されるとリソースが再作成される。

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