gpt4 book ai didi

amazon-ec2 - 根模块没有声明该名称的变量。要使用此值,请将 "variable" block 添加到配置中

转载 作者:行者123 更新时间:2023-12-04 01:27:48 26 4
gpt4 key购买 nike

我的目录结构

.
├── README.md
├── ec2
│   ├── ec2.tf
│   ├── outputs.tf
│   └── vars.tf
├── main.tf

主文件
provider "aws" {
region = "us-east-1"
}

module "ec2" {
source = "./ec2"
}

ec2/ec2.tf
data "aws_ami" "example" {
most_recent = true
owners = [
"amazon"]

filter {
name = "image-id"
values = [
"ami-0323c3dd2da7fb37d"]
}

filter {
name = "root-device-type"
values = [
"ebs"]
}

filter {
name = "virtualization-type"
values = [
"hvm"]
}
}

resource "aws_instance" "web" {
ami = data.aws_ami.example.id
instance_type = "t2.micro"
subnet_id = var.subnet_id
tags = {
Name = "HelloWorld"
}
}

ec2/avrs.tf
variable "subnet_id" {
default = {}
}

当我尝试从外部传递子网 ID 时,出现错误。
terraform plan -var subnet_id=$subnet_name

错误:未声明变量的值
在命令行上分配了一个名为“subnet_id”的变量,但根
模块没有声明该名称的变量。要使用此值,请添加
配置的“变量” block 。

如果你们中有人对此问题有任何想法,请帮助我。

最佳答案

您还需要在使用模块的根模块中定义变量。在您的情况下,您使用 main.tf 中的模块,因此在模块中添加变量,如下所示:

地形 12

provider "aws" {
region = "us-east-1"
}

module "ec2" {
source = "./ec2"
subnet_id = var.subnet_id
}

地形 11
provider "aws" {
region = "us-east-1"
}

module "ec2" {
source = "./ec2"
subnet_id = "${var.subnet_id}"
}

关于amazon-ec2 - 根模块没有声明该名称的变量。要使用此值,请将 "variable" block 添加到配置中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61565781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com