Terraform のメタ引数
概要
全てのresourceで対して使用できる特殊な属性
depends_on
リソース間の依存関係を定義できる
依存関係は基本的にTerraform側で自動で判断している。ただ、一部依存関係を解決してくれないことがある。その時に使用する。
AWS上ではパブリックアクセスブロックとパケットポリシーは継承関係にあるが、Terraform上では依存関係がない。こういった場合にdepends_onを使用する。
code:main.tf
resource <RESOURCE_TYPE> <RESOURCE_NAME> {
depends_on = [
<ADDRESS>
]
}
count
指定回数をリソースを複製できる。
for_each と併用はできない
code:main.tf
resource "aws_instance" "server" {
count = 4
ami = "ami-..."
instance_type = "t3.micro"
tags = {
Name = "Amazon Linux 2 Server ${count.index}
}
}
for_each
リストをループしながらリソースを複製する
指定したmapまたはsetを展開して複製リソースする
countと併用はできない
mapの場合
code:main.tf
resource "aws_subnet" "subnet" {
for_each = {
"192.168.1.0/24" = "ap-northeast-1a"
"192.168.2.0/24" = "ap-northeast-1c"
"192.168.3.0/24" = "ap-northeast-1d"
}
vpc_id = aws_vpc.vpc.id
cider_block = each.key
availability_zone = each.value
}
listの場合は、toset関数を変換する。
each.keyしか使用できないで注意
code:main.tf
resource "aws_iam_user" "user" {
for_each = toset([
"tanaka",
"sato"
])
name = each.key
}
lifecycle
terraformがリソース操作をする時の制御を管理する
リソースの種類はこちらTerraform リソース操作種類
code:main.tf
resource <RESOURCE_TYPE> <RESOURCE_NAME> {
lifecycle {
create_before_destroy = false
prevent_destroy = false
ignore_changes = tags
}
}
create_before_destroy: リソース削除前に生成を行うか。リソース名が一意になるように注意をする。
prevent_destroy: 削除を防止する。RDSなどに適用
ignore_changes: 指定された属性の変更を無視するか。将来変更するが一旦無視したい場合などに注意する。
provider
プロバイダーを上書きする