如何使用Terraform将EC2实例启动到现有VPC中?

时间:2020-02-14 01:51:32

标签: amazon-ec2 terraform amazon-vpc

我正在编写TF脚本,以将EC2实例启动到现有VPC中。我已经看到了一些示例,其中脚本使用脚本的另一部分中创建VPC和子网的变量来分配子网ID。 我没有像该示例所示那样使用subnet_id =“ $ {aws_subnet.main-public-1.id}”,而是尝试将来自现有子网的实际子网ID放入现有的VPN中,这两个都是使用控制台完成的,就像这样:

subnet_id = "subnet-xxxxx"

并以相同方式应用安全组。但是,当EC实例站起来时,它位于具有默认安全组的默认VPC中。为什么会这样呢?如何将EC2启动到具有现有安全组的现有VPC和子网中?

这是完整的脚本

EC2.tf

provider "aws" {
  profile    = "default"
  region     = var.region
}

resource "aws_instance" "WindowsBox" {
  ami           = "ami-xxxxx"
  instance_type = "t2.medium"
  key_name = aws_key_pair.keypair.key_name

  subnet_id = "subnet-xxxxx"
  vpc_security_group_ids = ["sg-xxxxx"]

  tags = {
    Name ="WindowsBox"
  }
}

resource "aws_eip" "ip" {
    vpc = true
    instance = aws_instance.WindowsBox.id
}

resource "aws_key_pair" "keypair" {
  key_name = "WindowsBox-keypair"
  public_key = file("./kp/WindowsBox-keypair.pub")
}

Variables.tf

variable "region" {
  default = "us-east-2"
}

1 个答案:

答案 0 :(得分:0)

用于创建实例的安全组也应该存在于VPC内部。我认为这里不是这样。

我将检查安全组的VPC ID与子网的VPC ID是否匹配。

希望这会有所帮助