代码之家  ›  专栏  ›  技术社区  ›  chetan

将弹性IP连接到Terraform中的多个EC2实例

  •  0
  • chetan  · 技术社区  · 2 年前

    我正在尝试使用terraform将弹性IP连接到多个EC2实例。我已经能够创建EC2实例、专有网络和安全组,但在将弹性IP连接到EC2实例时出错。

    资源AWS\u实例

    resource "aws_instance" "create_instance" {
    
    for_each = toset(var.instance_type)  
    ami = var.ami   instance_type = each.value   
     vpc_security_group_ids = [aws_security_group.vpc-ssh.id, aws_security_group.vpc-web.id]  
    availability_zone = var.availability_zone[index(var.instance_type,each.value)]
      tags = {
    "key" = each.value   
     } 
    }
    

    我无法解码实例id应该如何在弹性IP资源定义中填充。

    创建弹性IP

    resource "aws_eip" "my-eip" {   
    for_each = toset(var.instance_type)  
    instance = aws_instance.create_instance[???].id    // what should be used here
    vpc      = true   
    depends_on = [aws_internet_gateway.vpc-dev-igw] }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Ervin Szilagyi    2 年前

    因为你在循环变量 instance_type 对于这两种资源,您必须 each.value 对于引用EC2实例:

    resource "aws_eip" "my-eip" {
      for_each   = toset(var.instance_type)
      instance   = aws_instance.create_instance[each.value].id
      vpc        = true
      depends_on = [aws_internet_gateway.vpc-dev-igw]
    }