Terraform 地形输出';错误:不允许使用变量';做计划的时候
我在我的Terraform 地形输出';错误:不允许使用变量';做计划的时候,terraform,Terraform,我在我的variables.tf中声明了一个变量,如下所示: variable "MyAmi" { type = map(string) } 但当我这样做的时候: terraform plan -var 'MyAmi=xxxx' 我得到: Error: Variables not allowed on <value for var.MyAmi> line 1: (source code not available) Variables may not be use
variables.tf中声明了一个变量,如下所示:
variable "MyAmi" {
type = map(string)
}
但当我这样做的时候:
terraform plan -var 'MyAmi=xxxx'
我得到:
Error: Variables not allowed
on <value for var.MyAmi> line 1:
(source code not available)
Variables may not be used here.
变量.tf
variable "MyAmi" {
type = map(string)
}
terraform平面图-var'MyAmi=test'
Error: Variables not allowed
on <value for var.MyAmi> line 1:
(source code not available)
Variables may not be used here.
错误:不允许使用变量
第1行:
(源代码不可用)
这里不能使用变量。
有什么建议吗?我发现两件事可能会导致您看到的错误。链接到地形平面图
运行terraform plan
时,它将自动加载当前目录中的任何.tfvars
文件。如果.tfvars
文件位于另一个目录中,则必须将其作为-var文件
参数提供。您在问题中说您的变量位于文件variables.tf
中,这意味着terraform plan
命令不会自动加载该文件。修复:将variables.tf
重命名为variables.tfvars
当使用-var
参数时,您应该确保传递给它的内容将由HCL正确解释。如果您试图传递的变量是一个映射,那么它需要能够作为映射进行解析
而不是terraformplan-var'MyAmi=xxxx'
我希望类似terraformplan-var'MyAmi={“us-east-1”:“ami-123”,“us-east-2”:“ami-456”}'
有关声明变量和通过命令行专门传递变量的详细信息,请参见本节。当尝试从动态资源(例如:子模块的输出)设置变量值时,也会发生此错误:
你能在一个我们可以运行并看到相同错误的环境中重新创建它吗?看起来您丢失了引发错误的位,或者解析器只是在某个地方掉到了堆中。是的,是映射变量导致了问题。这不起作用,我仍然收到“此处不允许使用变量”我认为这个答案是不完整的,因为我在执行foo=local时仍然得到了这里不允许的变量。在.tfvars
文件中有一些\u arn>@MarcelloRomani提到的文件是variables.tf,而不是.tfvars。
Error: Variables not allowed
on <value for var.MyAmi> line 1:
(source code not available)
Variables may not be used here.
variable "some_arn" {
description = "Some description"
default = module.some_module.some_output # <--- Error: Variables not allowed
}
locals {
some_arn = module.some_module.some_output
}