Terraform 启动源实例时出错:等待状态变为“成功”时超时(超时:15 秒)

Aru*_*pan 4 amazon-ec2 amazon-web-services terraform

我已经为 AWS 配置了 terraform。我已经自动化了 2 个 EC2 实例和 2 个 ECS 优化实例。

**Error launching source instance: timeout while waiting for the state to become 'success' (timeout: 15s)**当我应用 terraform 时,我得到了所有 4 个实例。

我在一些博客上发现可能是因为AMI不一致或者AMI id拼写错误。

因此,我修复了 AMI ID 中的拼写错误并能够启动 2 个实例。但是,我仍然收到其他两个实例的超时错误。

我正在使用 terraform 版本:0.9.6 我用于创建 ec2 的 TF 代码:

resource "aws_instance" "node1" {
  # ECS-optimized AMI for us-west-2
        ami = "ami-62d35c02"
        instance_type = "t2.medium"
    availability_zone = "us-west-2a"
    security_groups = [
        "${aws_security_group.sg.name}"
    ]
    key_name        = "key"
                tags {
            Name           = "Node Server 1"
        }
        user_data = <<EOF
        #!/bin/bash
        echo ECS_CLUSTER=uat >> /etc/ecs/ecs.config
        EOF
        iam_instance_profile = "${aws_iam_instance_profile.ecs.name}"
}

resource "aws_instance" "node2" {
  # ECS-optimized AMI for us-west-2
        ami = "ami-62d35c02"
        instance_type = "t2.medium"
        availability_zone = "us-west-2b"
        security_groups = [
                "${aws_security_group.sg.name}"
        ]
        key_name        = "key"
                tags {
                Name           = "Node Server 2"
        }
        user_data = <<EOF
                #!/bin/bash
                echo ECS_CLUSTER=uat >> /etc/ecs/ecs.config
                EOF
                iam_instance_profile = "${aws_iam_instance_profile.ecs.name}"
}

resource "aws_instance" "mongo" {
        ami = "ami-63ad4b1b"
        instance_type = "t2.medium"
        availability_zone = "us-west-2c"
        security_groups = [
                "${aws_security_group.sg.name}"
        ]
        key_name        = "key"
                tags {
                Name           = "MongoDB Server"
        }
}

resource "aws_instance" "mysql" {
        ami = "ami-22ac4a5a"
        instance_type = "t2.medium"
        availability_zone = "us-west-2c"
        security_groups = [
                "${aws_security_group.sg.name}"
        ]
        key_name        = "key"
                tags {
                Name           = "MySQL Server"
        }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗。

提前致谢。

小智 6

可以使用Terraform 调试日志来识别根本问题。当我遇到此错误时,就我而言,问题是 AWS 没有足够的容量来容纳我在配置的可用区中选择的实例类型。

调试此错误的一个好方法如下:

  1. 设置TF_LOG环境变量以启用 Terraform 调试日志。这可以在 Linux 或 Mac 上使用以下命令来完成:
export TF_LOG=DEBUG
Run Code Online (Sandbox Code Playgroud)
  1. 运行terraform apply命令。
  2. 当出现应用更改的提示时,如果该计划适合您,请写下yes并点击。Enter
  3. 如果出现错误,请搜索[DEBUG]其上方几行的条目以识别根本问题。举个例子,就我而言,我发现了以下内容:
[DEBUG] plugin.terraform-provider-aws_v1.58.0_x4:
<Response>
  <Errors>
    <Error>
      <Code>InsufficientInstanceCapacity</Code>
      <Message>We currently do not have sufficient t3.medium capacity in the Availability Zone you requested (us-west-1a). Our system will be working on provisioning additional capacity. You can currently get t3.medium capacity by not specifying an
        Availability Zone in your request or choosing us-west-1b.</Message>
    </Error>
  </Errors>
  <RequestID>...</RequestID>
</Response>
Run Code Online (Sandbox Code Playgroud)
  1. 这应该允许您在要部署的基础设施中执行纠正操作。