Mel*_*leD 3 terraform terraform-provider-azure terraform0.12+
我想为 Azure 应用程序网关创建一个模块。
我想使用内联块 disabled_rule_group 禁用一些规则组,但是如何在模块中进行配置?这应该是一个可选变量。
我找到了for_each嵌套块的 。
例子:
variable "disabled_rule_groups" {
default = [
{
rule_group_name = "REQUEST-931-APPLICATION-ATTACK-RFI"
rules = [
931100,
931130]
},
{
rule_group_name = "REQUEST-942-APPLICATION-ATTACK-SQLI"
rules = [
942100
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
resource "azurerm_application_gateway" "AppGateway" {
dynamic "disabled_rule_group" {
for_each = [var.disabled_rule_groups]
content {
rule_group_name = disabled_rule_group.value.rule_group_name
rules = disabled_rule_group.value.rules
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用。
有人知道如何修复语法吗?
此外,该变量disabled_rule_groups应该是可选的。所以如果没有设置 disabled_rule_groups 块应该被禁用。我怎样才能做到这一点?我是否需要第二个布尔变量和一个 if ?
是的,您在那里的语法不正确。你显然是这个意思:
resource "azurerm_application_gateway" "AppGateway" {
dynamic "disabled_rule_group" {
for_each = var.disabled_rule_groups // Removed [ ] from this line.
content {
rule_group_name = disabled_rule_group.value.rule_group_name
rules = disabled_rule_group.value.rules
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,该变量
disabled_rule_groups应该是可选的。所以如果没有设置 disabled_rule_groups 块应该被禁用。我怎样才能做到这一点?我是否需要第二个布尔变量和一个 if ?
使参数可选的最佳方法是允许它默认为空列表。但是按照您编写的方式,它已经是可选的,但是当未指定时,将默认为您写出的默认值。
可能,你想要的是这样的:
variable "disabled_rule_groups" {
default = []
}
Run Code Online (Sandbox Code Playgroud)
然后,您不需要任何条件逻辑,因为如果您遍历一个空列表(即for_each = []),那么将不会生成那些动态嵌套块,这似乎是您想要的。
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |