使用 bool 的 Terraform 计数?

Terraform count using bool?

count 是能够在 Terraform 中有条件地提供资源的一个很好的元参数。根据我以前的经验,我们做类似 my_var = "1" 的事情,并使用它以编程方式控制 count.

的资源创建

因为 count 在这种情况下接受字符串 "1",但也可以解释 number 类型(例如 1),我想知道:

a) Terraform count 的幕后工作是什么;它首先将字符串解析为数字吗?
b) 它也可以接受其他数据类型吗? bool?

我希望有一个 .tfvars,其中有一个 my_var = true,然后将其传递到受影响资源的 count 元参数中,例如 count = var.my_var.这可能吗?


我还请求提供一些信息,这些信息通常涉及如何在 Terraform 中解释数据类型的“真实性”。如果您有文档或博客 post 可以分享,我们将不胜感激!

a).在 Terraform 中,数值的字符串表示会自动转换为数字。来自 docs:

Terraform automatically converts number and bool values to strings when needed. It also converts strings to numbers or bools, as long as the string contains a valid representation of a number or bool value.

  • true converts to "true", and vice-versa
  • false converts to "false", and vice-versa
  • 15 converts to "15", and vice-versa

这是有效的:

resource "aws_s3_bucket" "s3" {
  bucket = "bucket-name"
  count = "1"
}

这也是有效的:

resource "aws_s3_bucket" "s3" {
  bucket = "bucket-name"
  count = 1
}

b).在 Terraform 中,布尔值不被视为数值。数字不会自动转换为布尔值,这意味着这是无效的:

resource "aws_s3_bucket" "s3" {
  bucket = "asd"
  count = false
}

它会抛出以下错误:

╷
│ Error: Incorrect value type
│
│   on main.tf line 9, in resource "aws_s3_bucket" "s3":
│    9:   count = false
│
│ Invalid expression value: number required.
╵