【发布时间】:2022-01-14 06:29:36
【问题描述】:
我正在azurerm_app_service 之上创建一个模块。我不想增加输入变量列表来收集更大块的所有可能值,例如site_config。
variable var1{}
variable var2{}
..
..
..
variable varN{}
resource "azurerm_app_service" "example" {
name = "example-app-service"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
site_config {
key1 = var.var1
key2 = var.var2
...
...
keyN = var.varN
}
app_settings = {
"SOME_KEY" = "some-value"
}
}
我想参数化整个块本身。
类似的东西
variable var_block{
type = map()
}
resource "azurerm_app_service" "example" {
name = "example-app-service"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
app_service_plan_id = azurerm_app_service_plan.example.id
site_config {
var.var_block
}
app_settings = {
"SOME_KEY" = "some-value"
}
}
在 python 世界中寻找 **kwargs 之类的东西。
有没有可能实现?
【问题讨论】:
-
你好@user1960109,site_config 有指定参数列表,如果你正在创建一个新参数,那么它会报错,这里不需要这个参数。
-
作为上述注释的扩展,您需要将变量类型为
object并带有可选值,这会变得混乱。如果site_config是一个参数而不是一个块,那么这将更加可行,但大概可以声明多个site_config。 -
@AnsumanBal-MT 我完全同意我们可以得到错误,因为意外的参数不可用。这里的假设是这些模块的消费者将知道要提供哪些可能的值。在那种情况下,我们有什么办法可以简化它吗?
-
@MattSchuchard 肯定添加对象类型很难管理和混乱。不幸的是,AzureRM 带有 site_config 作为块而不是参数。
标签: terraform terraform-provider-azure hcl