[Terraform/AWS] for를 사용하여 ALB에 다중 서브넷 할당
개시하다
ALB(Application Load Balancer)에 할당된 가상 영역(이하 AZ)은 대부분 여러 개라고 생각한다.
이 경우 각 AZ에서 만든 서브넷은 Terraform의
for
로 기술된 ALB에 할당됩니다.컨디션
전제 조건
전제로 서브넷 사용
count
등 여러 개를 제작한다.subnet.tf
resource "aws_subnet" "public" {
count = 3
availability_zone = var.availability_zones[count.index]
cidr_block = cidrsubnet(aws_vpc.vpc.cidr_block, 4, count.index)
// 略
}
}
variables.tfvariable "availability_zones" {
type = list(string)
default = ["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"]
}
여기에 등장하는count
,count.index
,cidrsubnet
함수에 대해서는 아래의 글을 참조하십시오.for
ALB(aws lb)에서는 할당된 서브넷을
subnets
로 지정할 수 있으며, 여기서 사용for
할 수 있습니다.alb.tf
resource "aws_lb" "alb" {
load_balancer_type = "application"
// 略
subnets = [
for s in aws_subnet.public :
s.id
]
// 略
}
aws_subnet.public
전제에 기재된 subnet.tf
처럼 서로 다른 AZ로서의 총 3개의 서브넷이 저장되어 있다.여기에는
for
와 in
를 사용하여 aws_subnet.public
에서 서브넷을 꺼내 s
에 저장하고s.id
로 이 서브넷을 참조한id
.이 세 차례가 중복되어
aws_subnet.public
의 모든 서브넷이 ALB에 분배되고 다중 AZ화되었다.끝맺다
for
와in
와:
로 구성된 문법은 파이톤과 매우 비슷하다.그러나 다음 행이 들여쓰지 않는 것은 Terraform의 올바른 쓰기 방법입니다.
terraform fmt
실행 후 다음과 같은 무축소 형식으로 수정됩니다.alb.tf
subnets = [
for s in aws_subnet.public :
- s.id
+ s.id
]
참고 자료
For Expressions - Configuration Language - Terraform by HashiCorp
Terraform 0.11→0.12에 추가된 새로운 기능입니다.IO
Reference
이 문제에 관하여([Terraform/AWS] for를 사용하여 ALB에 다중 서브넷 할당), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/shonansurvivors/articles/aea403505e8734텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)