あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

Terraformのリソース適用順序について調べてみた

Terraformでコードを書くときリソース適用順序をあまり気にしていなかったがCloudFormationでは明示的に依存関係を記載する必要があるのでTerraformではどうなっているのか調べてみた。

Terraformのリソース適用順序

ばっさりいうと順不同。可能な限り効率的に作成・変更・削除をする。ただし依存関係がある場合は依存元の適用が優先される。

Terraformの依存関係起票方法

1.参照依存

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_subnet" "example" {
  vpc_id     = aws_vpc.example.id
  cidr_block = "10.0.1.0/24"
}

この場合、subnetの項目内にvpc_idがあり、resourceのaws_vpcを参照しているためvpcが先に作成される。このように参照されるリソースがある場合先に適用される。DependOnを指定することで明示的に参照を作ることも可能。

2.DependOn
S3バケットを2つ作成するケースで、bucket1を先に作成する場合

resource "aws_s3_bucket" "bucket1" {
  bucket = "my-first-bucket"
}

resource "aws_s3_bucket" "bucket2" {
  bucket = "my-second-bucket"
  depends_on = [aws_s3_bucket.bucket1]
}

感想

まぁそんな気がしてたが、何となくそうだろうというのと、確実にそうだというのでは使うときの説得力が違うので調べておいてよかった。( ゚Д゚)アハーン