[英]How do I launch an AWS EC2 instance using an AWS launch template with Terraform?
[英]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]
}
我想做的是下面
指定我的啟動模板並啟動 EC2 實例
子網關聯應該基於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" {
│
╵
我究竟做錯了什么?
好的 - 我發現了問題(鋼筆和鉛筆書寫)
啟動模板 ID 不需要定義任何子網
但是任何 VPC 都應該創建子網並將(良好實踐)分配給不同的 AZ
例如,subnet-2a 應該使用 AZ 1,subnet-2b 應該使用 AZ 2 等。
現在,通過下面的資源/模塊調用 - 一切都很好
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.