EC2 实例创建 [英] EC2 instance creation

查看:26
本文介绍了EC2 实例创建的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建多个 EC2 实例,但它们具有不同的 AMI、实例类型,并且应该位于不同的可用区中,如下所示.我尝试了几种不同的方法,但都无法成功.

I'm trying to create multiple EC2 instance but they have different AMIs, instance types and should be in different availability zones as shown below. I've tried a few different ways but can't make it work.

locals {
  az_ami = [
    {Name = "host1", type = "t3a.medium", az = "eu_west_2a", ami_id = "ami-01234abc"},
    {Name = "host2", type = "t3a.micro", az = "eu_west_2b", ami_id = "ami-01234def"},
    {Name = "host3", type = "t3a.medium", az = "eu_west_2b", ami_id = "ami-01234gef"},
    {Name = "host4", type = "t3a.medium", az = "eu_west_2a", ami_id = "ami-01234hty"}
  ]
}

#variable "ami_id" {}

resource "aws_instance" "myinstance" {
  count    = length(local.az_ami)
  for_each = [{ for i in local.az_ami: }]

  dynamic "ec2_instance"{
    for_each = local.az_ami[count.index]
    content {
      instance_type     = "ec2_instance.value.Name"
      availability_zone = "ec2_instance.value.az"
      ami               = "ec2_instance.value.ami_id"
    }
  }
}

推荐答案

如果要使用count,那么应该是:

If you want to use count, then it should be:

resource "aws_instance" "myinstance" {

  count             = length(local.az_ami)

  instance_type     = local.az_ami[count.index].type
  availability_zone = local.az_ami[count.index].az
  ami               = local.az_ami[count.index].ami_id
  
  tags = {
    Name = local.az_ami[count.index].Name
  }
}

但使用 for_each 可能是:

resource "aws_instance" "myinstance2" {

  for_each    = {for idx, val in local.az_ami: idx => val}

  instance_type     = each.value.type
  availability_zone = each.value.az
  ami               = each.value.ami_id
  
  tags = {
    Name = each.value.Name
  }
}

这篇关于EC2 实例创建的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆