Terraform: VPC サブネットを可変にする方法

Terraform: VPC サブネットを可変にする方法

2 つのサブネットに 2 つのドメイン コントローラー インスタンスをプロビジョニングします。VPC、サブネット、およびその他のネットワーク セクションはすでに作成されています。

メイン.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プロビジョニングされている翻訳そしてDC02プロビジョニングされている翻訳元?

答え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}"
  }
}

変数:

instances = [
  {
    ami       = "brad",
    subnet_id = "sg1",
  },
  {
    ami       = "pitt",
    subnet_id = "sg2",
  } 
]

これにより、インスタンスの 1 つを新しい AMI に移行できます。

関連情報