![Terraform: VPC 서브넷을 가변화하는 방법](https://rvso.com/image/756244/Terraform%3A%20VPC%20%EC%84%9C%EB%B8%8C%EB%84%B7%EC%9D%84%20%EA%B0%80%EB%B3%80%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
2개의 서브넷에 2개의 도메인 컨트롤러 인스턴스를 프로비저닝하고 싶습니다. VPC, 서브넷 및 기타 네트워킹 섹션이 이미 생성되어 있습니다.
main.tf
resource "aws_instance" "PerformanceDC01" {
count = var.instance_count
ami = var.aws_ami
ebs_optimized = true
instance_type = var.aws_instance_type
subnet_id = var.pvtsub_a
key_name = var.aws_key_name
vpc_security_group_ids = [
var.base_sg,
var.perfdc_sg
]
root_block_device {
volume_type = "gp2"
volume_size = "80"
encrypted = true
kms_key_id = "10c07c9d-ede7-43d5-b633-75a2482848aa"
}
tags = {
Name = "PerformanceDC0-${count.index + 1}"
}
}
변수.tf
variable "aws_region" {}
variable "aws_profile" {}
variable "instance_count" {}
variable "aws_vpc" {}
variable "pvtsub_a" {}
variable "pvtsub_b" {}
variable "pvtsub_c" {}
variable "pubsub_a" {}
variable "pubsub_b" {}
variable "pubsub_c" {}
variable "aws_ami" {}
variable "aws_instance_type" {}
variable "aws_key_name" {
description = "Key Name"
default = "Performance_B_KP"
}
variable "base_sg" {}
variable "perfdc_sg" {}
성능.tfvars
.
.
instance_count = "2"
.
.
질문: 어떻게 변수화하나요?서브넷_ID~와 같은DC01에 프로비저닝됩니다pvtsub_a그리고DC02에 프로비저닝됩니다pvtsub_b?
답변1
for_each
다음과 같이 대신 사용하십시오 count
.
resource "aws_instance" "PerformanceDC" {
for_each = var.instances
ami = each.value.ami
subnet_id = each.value.subnet_id
...
tags = {
Name = "PerformanceDC0-${each.key + 1}"
}
}
tfvar:
instances = [
{
ami = "brad",
subnet_id = "sg1",
},
{
ami = "pitt",
subnet_id = "sg2",
}
]
이를 통해 인스턴스 중 하나를 새 AMI로 마이그레이션할 수 있습니다.