簡體   English   中英

Terraform - 無法使用啟動模板啟動 AWS EC2 實例

[英]Terraform - cannot launch AWS EC2 instance with Launch Template

我的 EC2 實例資源代碼

resource "aws_instance" "my-sample-webapp-ec2" {
  availability_zone                    = var.availability_zone
  subnet_id                            = var.subnet_id
  key_name                             = var.ec2_instance_name
  instance_initiated_shutdown_behavior = "stop"
  disable_api_termination              = false
  #  vpc_security_group_ids               = var.vpc_security_group_ids

  launch_template {
    id      = var.launch_template_id
    version = "$Latest"
  }

  tags = {
    "Name" = var.ec2_instance_name
  }

  root_block_device {
    delete_on_termination = true
  }

}

我的啟動模板已存在於 AWS 區域 - 已選中

上述 EC2 資源的我的模塊導入

module "aws_ec2_machines" {
  source              = "./modules/ec2_machines"
  count               = length(local.availability_zones)
  launch_template_id  = var.launch_template_id
  launch_template_ver = var.launch_template_ver
  ec2_instance_name   = "${var.ec2_instance_name}-${count.index + 1}"
  availability_zone   = local.availability_zones[count.index]
}

我想做的是下面

  1. 指定我的啟動模板並啟動 EC2 實例

  2. 子網關聯應該基於availability_zone發生

目前,我只有 3 個子網(每個可用區 1 個),但它們不是默認的。 此外,創建子網的 VPC 也不是默認 VPC。

我得到的錯誤

│ Error: Error launching source instance: InvalidParameterValue: Value (us-east-2b) for parameter availabilityZone is invalid. Subnet 'subnet-xxxxxx' is in the availability zone us-east-2a
│       status code: 400, request id: 75a126cb-59eb-40fe-9fa5-579ed908edbd
│
│   with module.aws_ec2_machines[1].aws_instance.my-sample-webapp-ec2,
│   on modules\ec2_machines\main.tf line 7, in resource "aws_instance" "my-sample-webapp-ec2":
│    7: resource "aws_instance" "my-sample-webapp-ec2" {
│
╵

我究竟做錯了什么?

好的 - 我發現了問題(鋼筆和鉛筆書寫)

  1. 啟動模板 ID 不需要定義任何子網

  2. 但是任何 VPC 都應該創建子網並將(良好實踐)分配給不同的 AZ

    例如,subnet-2a 應該使用 AZ 1,subnet-2b 應該使用 AZ 2 等。

  3. 現在,通過下面的資源/模塊調用 - 一切都很好

    resource "aws_instance" "my-sample-webapp-ec2" { subnet_id = var.subnet_id instance_initiated_shutdown_behavior = "stop" disable_api_termination = false launch_template { id = var.launch_template_id version = "$Latest" } tags = { "Name" = var.ec2_instance_name } root_block_device { delete_on_termination = true } }

以及main.tf中的后續模塊調用

  module "aws_ec2_machines" {
  source              = "./modules/ec2_machines"
  count               = length(local.availability_zones)
  launch_template_id  = var.launch_template_id
  launch_template_ver = var.launch_template_ver
  ec2_instance_name   = "${var.ec2_instance_name}-${count.index + 1}"
  subnet_id           = local.subnets[count.index % local.available_subnet_count]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM