You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform map(object)变量单行输入报错,求正确语法

Terraform单行传入map(object)类型变量的正确方法

问题根源分析

你当前的写法存在三个核心问题:

  1. 变量名不匹配:定义的变量是user_node_pool,但传入的参数名是user_node_pools(多了末尾的s),导致Terraform无法匹配到目标变量。
  2. 类型错误:将map结构用JSON字符串包裹并加引号,会被Terraform识别为string类型,和变量要求的map(object)类型不兼容。
  3. 布尔值格式错误:user_auto_scaling是bool类型,不能用带引号的"true",必须直接写小写的true(无引号)。

正确单行传参写法

1. 命令行直接传入(terraform apply -var)

使用单引号包裹整个变量值,内部保持标准HCL的map结构:

terraform apply -var 'user_node_pool={"pool2": {"mode": "User", "vm_size": "Standard_D2_v3", "user_max_pods": 110, "user_os_size": 128, "node_os": "Windows", "user_auto_scaling": true, "user_min_count": 1, "user_max_count": 1}}'

2. 通过环境变量传入(TF_VAR_前缀)

同样用单引号包裹结构,直接赋值给环境变量:

export TF_VAR_user_node_pool='{"pool2": {"mode": "User", "vm_size": "Standard_D2_v3", "user_max_pods": 110, "user_os_size": 128, "node_os": "Windows", "user_auto_scaling": true, "user_min_count": 1, "user_max_count": 1}}'

注意事项

  • 若使用Windows CMD环境,外层改用双引号,内部双引号需转义为"":
    terraform apply -var "user_node_pool={""pool2"": {""mode"": ""User"", ""vm_size"": ""Standard_D2_v3"", ""user_max_pods"": 110, ""user_os_size"": 128, ""node_os"": ""Windows"", ""user_auto_scaling"": true, ""user_min_count"": 1, ""user_max_count"": 1}}"
    
  • 确保所有字段类型与变量定义严格匹配:数字类型直接写数值,布尔值用true/false(小写无引号),字符串用双引号包裹。

内容的提问来源于stack exchange,提问作者Susheel Bhatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:12:50