Terraform命令行传递列表变量时出现“Error: Variables not allowed”错误
Terraform变量传递报错解决
问题场景
我的variable.tf文件内容:
variable "users"{ type = list }
output-list.tf文件内容:
output print-users{ value = "First user is ${var.users[0]}\nSecond user is ${var.users[1]}" }
执行terraform plan并手动输入["Abhishek","Arya"]时输出正常,但执行terraform plan -var 'users=["Abhishek","Arya"]'时触发Error: Variables not allowed错误。
解决方法
这是shell对引号的解析逻辑导致的问题,以下几种方式可以解决:
调整引号嵌套格式
用双引号包裹整个变量参数,内部元素用单引号:terraform plan -var "users=['Abhishek','Arya']"转义内部双引号
如果偏好单引号包裹整体,需要对内部的双引号进行转义(适用于Bash等主流shell):terraform plan -var 'users=[\"Abhishek\",\"Arya\"]'使用变量文件(推荐)
创建terraform.tfvars文件并写入变量值:users = ["Abhishek", "Arya"]之后直接执行命令即可,Terraform会自动读取该文件的变量:
terraform plan这种方式更清晰,也适合管理多个或复杂变量。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

