在 terraform 资源块中使参数可选
Making an argument optional in terraform resource block
我们能否使资源块中存在的参数用法可选
例如,在下面的资源块 table_name 中, mapping_rule_name 和 data_format 是可选参数,我希望有一个标准的 terraform 格式,我可以使这些值可选,例如 if var.table_name 变量有值,它应该提供给 table_name 否则 table_name 应该被忽略,即在没有 table_name,[=19= 的情况下形成 eventhubconnection ] 和 data_format 因为这些是可选值
resource "azurerm_kusto_eventhub_data_connection" "eventhub_connection" {
name = "my-kusto-eventhub-data-connection"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
cluster_name = azurerm_kusto_cluster.cluster.name
database_name = azurerm_kusto_database.database.name
eventhub_id = azurerm_eventhub.eventhub.id
consumer_group = azurerm_eventhub_consumer_group.consumer_group.name
table_name = var.table_name #(Optional)
mapping_rule_name = var.mapping_rule_name #(Optional)
data_format = var.data_format #(Optional)
}
有什么方法可以在 terraform 中做到这一点?
您可以使用 Conditionally Omitted Arguments,它允许具有值 null
的变量被 Terraform 解释为“未设置”。我喜欢使用以下模式来制作更多利用此功能的“toggle-able”属性:
定义变量
# variables.tf
variable "table_name" {
type = string
# ...
default = null
}
variable "mapping_rule_name" {
type = string
# ...
default = null
}
正在初始化变量
# myterraform.tfvars
table_name = "my-table-name"
使用有条件的省略参数
# eventhub.tf
resource "azurerm_kusto_eventhub_data_connection" "eventhub_connection" {
# ...
table_name = var.table_name # instantiated to value in .tfvars
mapping_rule_name = var.mapping_rule_name # is "unset" by default null value
}
如果您想这样做,但使用嵌套的属性块而不仅仅是属性,您可以查看 Dynamic Nested Blocks 并应用条件逻辑来确定是否会生成所述块。
我们能否使资源块中存在的参数用法可选 例如,在下面的资源块 table_name 中, mapping_rule_name 和 data_format 是可选参数,我希望有一个标准的 terraform 格式,我可以使这些值可选,例如 if var.table_name 变量有值,它应该提供给 table_name 否则 table_name 应该被忽略,即在没有 table_name,[=19= 的情况下形成 eventhubconnection ] 和 data_format 因为这些是可选值
resource "azurerm_kusto_eventhub_data_connection" "eventhub_connection" {
name = "my-kusto-eventhub-data-connection"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
cluster_name = azurerm_kusto_cluster.cluster.name
database_name = azurerm_kusto_database.database.name
eventhub_id = azurerm_eventhub.eventhub.id
consumer_group = azurerm_eventhub_consumer_group.consumer_group.name
table_name = var.table_name #(Optional)
mapping_rule_name = var.mapping_rule_name #(Optional)
data_format = var.data_format #(Optional)
}
有什么方法可以在 terraform 中做到这一点?
您可以使用 Conditionally Omitted Arguments,它允许具有值 null
的变量被 Terraform 解释为“未设置”。我喜欢使用以下模式来制作更多利用此功能的“toggle-able”属性:
定义变量
# variables.tf
variable "table_name" {
type = string
# ...
default = null
}
variable "mapping_rule_name" {
type = string
# ...
default = null
}
正在初始化变量
# myterraform.tfvars
table_name = "my-table-name"
使用有条件的省略参数
# eventhub.tf
resource "azurerm_kusto_eventhub_data_connection" "eventhub_connection" {
# ...
table_name = var.table_name # instantiated to value in .tfvars
mapping_rule_name = var.mapping_rule_name # is "unset" by default null value
}
如果您想这样做,但使用嵌套的属性块而不仅仅是属性,您可以查看 Dynamic Nested Blocks 并应用条件逻辑来确定是否会生成所述块。