使用 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.
╵
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-versafalse
converts to"false"
, and vice-versa15
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.
╵