Pri*_*a25 3 parsing escaping terraform kubernetes-helm
当我从 TF 代码中为 helm_release 资源设置数组值时,如下所示:
set {
name = "ObjectIds"
value = "{${join(",", local.rbac_config.group_oid_list)}}"
}
Run Code Online (Sandbox Code Playgroud)
我的 TF 计划显示正在传递的值,如下所示:
+ set {
+ name = "ObjectIds"
+ value = "{"Id1-xxxxxxxxxxx,Id2-yyyyyyyyyyyyyyyyyyy,Id3-zzzzzzzzzzzzzzzz"}"
}
Run Code Online (Sandbox Code Playgroud)
为什么我需要这样的格式?
当使用 手动从命令行安装 helm 图表时helm install
,如果我指定,它会抛出错误--set ObjectIds={Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz}
头盔错误:Error: This command needs 2 arguments: release name, chart path
修复:当我指定 时它工作得很好--set ObjectIds={"Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz"}
。所以我希望 Terraform 代码将值解析为value = "{"Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz"}"
而不是value = "{Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz}"
我尝试过的事情:
1. 不起作用:
set {
name = "ObjectIds"
value = "{\"${join(",", local.rbac_config.group_oid_list)}\"}"
}
Run Code Online (Sandbox Code Playgroud)
失败/错误:TF Plan 将值解析为
+ value = "{\"Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz\"}"
Run Code Online (Sandbox Code Playgroud)
2. 不起作用:
set {
name = "ObjectIds"
value = format("\"%s\"", join(",", local.rbac_config.group_oid_list))
}
Run Code Online (Sandbox Code Playgroud)
失败/错误: TF Plan 将值解析为
+ value = "{\"Id1-xxxxxxxx,Id2-yyyyyyyy,Id3-zzzzzz\"}"
Run Code Online (Sandbox Code Playgroud)
有什么建议我如何让它发挥作用吗?
小智 5
我知道这是一个老问题,但是当你有变量时,你可以使用动态集:
dynamic set {
for_each = var.sample_array
content {
name = "object[${set.key}]"
value = set.value
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5212 次 |
最近记录: |