我之前在我的 TF 代码中使用过这个:
count = "${var.whatever == "true" ? 1 : 0}"
Run Code Online (Sandbox Code Playgroud)
这非常适合我想要使用的东西。但是,我正在考虑如何最好地使用类似的东西,如果var.whatever等于true,则计数等于length(var.whatever)。
这行得通吗?
count = "${var.whatever == "true" ? ${length(var.whatever) : 0}"
只是我对 TF 的印象一直是不能嵌套插值。
另外,这让我想到了另一个有趣的问题……你们用什么来测试语法?我并不是要检查 TF 代码,我的意思是运行代码来测试这样的事情?我不想只是部署到开发人员,只是为了测试我的 TF 代码的输出。我想知道是否有某种东西,像贝壳一样,我可以按原样测试这些东西bash或其他东西。有什么想法吗?
你最初的想法行不通,因为 ifvar.whatever是一个列表,那么它不能也是一个字符串(即= "true")。
然而,好消息是插值可以在通用三元运算符内部使用。
所以你可以有类似的东西:
count = "${var.bool == "true" ? length(var.whatever) : 0}"
Run Code Online (Sandbox Code Playgroud)
在将插值放入最终代码之前测试插值的一个好方法是使用Terraform 的控制台功能(即terraform console)。
在文件中设置变量,例如console.tf在没有任何其他 TF 代码的目录中。
variable "whatever" {
type = "list"
default = ["1", "2", "foo", "bar" ]
}
variable "bool" {
default = "true"
}
Run Code Online (Sandbox Code Playgroud)
现在从命令行运行terraform console.
$ terraform console
> var.whatever
[
"1",
"2",
"foo",
"bar",
]
> length(var.whatever)
4
> "${var.bool == "true" ? length(var.whatever) : 0}"
4
> exit
$
Run Code Online (Sandbox Code Playgroud)
您可以看到 Terraform 执行插值,然后对这些评估值运行三元运算符。
| 归档时间: |
|
| 查看次数: |
8684 次 |
| 最近记录: |