无法从地形变量文件中读取变量



这是我的设置,

地形版本 - 地形 v0.12.17 操作系统 - OSX 10.15.1

用例 - 定义提供程序文件并访问 vars 文件中定义的变量

文件 main.tf - 代码所在的位置

provider "aws" {
}
variable "AWS_REGION" {
type = string
}
variable "AMIS" {
type = map(string)
default = {
us-west-1 = "my ami"
}
}
resource "aws_instance" "awsInstall" {
ami = var.AMIS[var.AWS_REGION]
instance_type = "t2.micro"
}

awsVars.tfvars - 定义区域的位置

AWS_REGION="eu-region-1"

执行

$ 地形控制台

变种。AWS_REGION

错误:结果取决于在"地形应用"之后才能确定的值。

我犯了什么错误,我没有看到任何语法,但在访问变量时遇到问题,任何指针都会有所帮助

谢谢

Terraform 不会自动读取.tfvars文件,除非其文件名以.auto.tfvars结尾。正因为如此,当您在没有参数的情况下运行terraform console时,Terraform 不知道变量AWS_REGION的值。

要保留现有的文件名,您可以在命令行上显式传递此变量文件,如下所示:

terraform console -var-file="awsVars.tfvars"

或者,您可以将文件重命名为awsVars.auto.tfvars然后 Terraform 默认读取它,只要它在运行 Terraform 时位于当前工作目录中。

有关如何为根模块输入变量设置值的详细信息,请参阅 Terraform 文档部分为根模块变量赋值。


另请注意,输入变量和其他特定于 Terraform 的对象通常的命名约定是将名称保留为小写,并用下划线分隔单词。例如,将变量命名为aws_regionamis会更常规。

此外,如果您的目标是查找当前区域(由AWS_DEFAULT_REGION环境变量或在提供程序配置中选择的区域(的 AMI,则可以使用aws_region数据源允许 Terraform 自动确定,因此您根本不需要将其设置为变量:

variable "amis" {
type = map(string)
default = {
us-west-1 = "my ami"
}
}
data "aws_region" "current" {}
resource "aws_instance" "awsInstall" {
ami           = var.amis[data.aws_region.current.name]
instance_type = "t2.micro"
}

相关内容

  • 没有找到相关文章

最新更新