在我的案例中如何通过terraform创建ec2实例?

时间:2017-06-21 23:24:48

标签: amazon-web-services terraform amazon-ecs

我正在尝试通过terraform上的auto_scaling_group创建ec2实例

我有类似的东西:

resource "aws_ecs_cluster" "my_cluster" {
    name = "my-cluster"
}

resource "aws_autoscaling_group" "my_instances" {
    name = "my-instances"

    min_size = 1
    max_size = 2
    availability_zones = ["us-east-1a"]
    launch_configuration = "${aws_launch_configuration.my_ecs_instance.id}"

}

resource "aws_launch_configuration" "my_ecs_instance" {
    name_prefix = "my-ecs-instance"
    instance_type = "t2.micro"
    image_id = "ami-19e8cc0e"
}

Terraform plan -var-file=mykey.tfvars

工作正常,但

Terraform apply -var-file=mykey.tfvars

将创建像

这样的实例
aws_autoscaling_group.my_instances: Still creating... (9m20s elapsed)
aws_autoscaling_group.my_instances: Still creating... (9m30s elapsed)
aws_autoscaling_group.my_instances: Still creating... (9m40s elapsed)

最终超时并说

aws_autoscaling_group.my_instances: "my-instances"
Waiting up to 10m0s: Need at least 1 healthy instances in ASG, have 0. Most recent activity:
..more..
StatusMessage: "No default VPC for this user. Launching EC2 instance failed."

我想我需要指定vpc id,但我发现auto_scaling_group没有vpc_id属性。

我不知道如何解决这个问题,有人可以帮我解决这个问题吗?非常感谢!

2 个答案:

答案 0 :(得分:1)

错误消息为:StatusMessage: "No default VPC for this user. Launching EC2 instance failed."

您需要创建带子网的VPC,并在创建自动缩放组时提供子网ID。

考虑添加vpc_zone_identifier

  

vpc_zone_identifier(可选)用于启动资源的子网ID列表。

https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html#vpc_zone_identifier

答案 1 :(得分:1)

此等待是因为自动调整组正在等待至少一个ec2实例按照自动缩放组中的定义启动并运行,但没有。这导致了错误,其中提到了根本原因“此用户没有默认VPC”。基本上,没有ec2 up和runing,因为没有与自动缩放组关联的VPC,子网和/或VPC标识符。

要解决:

  • 首先,如果您还没有这样做,则需要使用vpc资源创建一个VPC “aws_vpc”
  • 接下来使用子网资源“aws_subnet”
  • 创建子网
  • 接下来将VPC标识符“vpc_zone_identifier”“aws_autoscaling_group”资源区域中的自动缩放组相关联

标识符应如下所示“aws_subnet.main-public-1”是在步骤2中创建的子网ID

vpc_zone_identifier  = ["${aws_subnet.main-public-1.id}"

我希望有帮助