【Terraform】for_each를 사용하여 볼륨 생성 및 첨부 처리

6975 단어 AWSTerraformtech

갑작스러운 결론


# main.tf
data "aws_ami" "latest_amzn_linux" {
  owners      = ["137112412989"]
  most_recent = true

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }
}

data "aws_availability_zones" "AZs" {}

resource "aws_instance" "web" {
  ami = data.aws_ami.latest_amzn_linux.id
  instance_type = "t2.micro"

  root_block_device {
    encrypted = true
    volume_size = 10
  }
}

# 以下から本題
resource "aws_ebs_volume" "web" {
  for_each = var.volume_info
  availability_zone = aws_instance.web.availability_zone
  size = each.value["volume_size"]
}

resource "aws_volume_attachment" "web" {
  for_each = var.volume_info
  instance_id = aws_instance.web.id
  volume_id = aws_ebs_volume.web[each.key].id
  device_name = each.value["device_name"]
}
# variables.tf
variable "volume_info" {
  type = map(any)
  default = {
    f = {
      volume_size = 10
      device_name = "/dev/sdf"
    }
    g = {
      volume_size = 30
      device_name = "/dev/sdg"
    }
    h = {
      volume_size = 40
      device_name = "/dev/sdh"
    }
    i = {
      volume_size = 50
      device_name = "/dev/sdi"
    }
    j = {
      volume_size = 60
      device_name = "/dev/sdj"
    }
  }
}
실행 결과.

끝맺다


※variables.tf의 type은 맵(ny)이 아직 모르는 부분이기 때문에 알면 업데이트합니다.
만약 이 보도가 다른 사람의 참고가 된다면 정말 좋겠다😊

좋은 웹페이지 즐겨찾기