Terraform:如果 属性 - 字符串列表为空,如何忽略可选块
Terraform : How to ignore the Optional block if the Property - list of string is Empty
我刚开始使用 terraform,下面是我的 terraform 代码。从下面 Cors 是一个可选块,其中它具有允许来源的 属性 这是字符串列表(URL 或 *)
resource "azurerm_signalr_service" "signalr_service" {
name="${var.signalr_name}"
location = "${var.resource_location}"
resource_group_name = "${var.resource_group_name}"
sku {
name = "${var.sku_name}"
capacity = "${var.sku_capacity}"
}
#Cors is an optional block
cors {
allowed_origins = "${var.cors_allowed_origins}"
}
Varilabe.tf:
variable "allowed_origins" {
type = "list"
description = "A list of origins which should be able to make cross-origin calls. * can be used to allow all calls"
default = []
}
用户may/maynot提供allowed_origns
,如果提供没有问题,如果不提供
- 默认为空列表[]:当我将空列表传递给
allowed_origns
时,它没有说不是有效的 URL
- 默认为
null
:如果我传递为 null,则 allowed_origin
单独为 null 并且 cors 作为空块传递,即 cors{}
由于 属性 遗漏错误
现在我的问题是,如果用户未向 allowed_origins
提供任何值,如何使整个 cors 块被忽略,我应该使用什么默认值?
您可以使用 dynamic blocks 使 CORS 块可选:
resource "azurerm_signalr_service" "signalr_service" {
name="${var.signalr_name}"
location = "${var.resource_location}"
resource_group_name = "${var.resource_group_name}"
sku {
name = "${var.sku_name}"
capacity = "${var.sku_capacity}"
}
dynamic "cors" {
for_each = length(var.cors_allowed_origins) > 0 ? [1] : []
content {
allowed_origins = "${var.cors_allowed_origins}"
}
}
}
默认值[]
就可以了。
我刚开始使用 terraform,下面是我的 terraform 代码。从下面 Cors 是一个可选块,其中它具有允许来源的 属性 这是字符串列表(URL 或 *)
resource "azurerm_signalr_service" "signalr_service" {
name="${var.signalr_name}"
location = "${var.resource_location}"
resource_group_name = "${var.resource_group_name}"
sku {
name = "${var.sku_name}"
capacity = "${var.sku_capacity}"
}
#Cors is an optional block
cors {
allowed_origins = "${var.cors_allowed_origins}"
}
Varilabe.tf:
variable "allowed_origins" {
type = "list"
description = "A list of origins which should be able to make cross-origin calls. * can be used to allow all calls"
default = []
}
用户may/maynot提供allowed_origns
,如果提供没有问题,如果不提供
- 默认为空列表[]:当我将空列表传递给
allowed_origns
时,它没有说不是有效的 URL - 默认为
null
:如果我传递为 null,则allowed_origin
单独为 null 并且 cors 作为空块传递,即cors{}
由于 属性 遗漏错误
现在我的问题是,如果用户未向 allowed_origins
提供任何值,如何使整个 cors 块被忽略,我应该使用什么默认值?
您可以使用 dynamic blocks 使 CORS 块可选:
resource "azurerm_signalr_service" "signalr_service" {
name="${var.signalr_name}"
location = "${var.resource_location}"
resource_group_name = "${var.resource_group_name}"
sku {
name = "${var.sku_name}"
capacity = "${var.sku_capacity}"
}
dynamic "cors" {
for_each = length(var.cors_allowed_origins) > 0 ? [1] : []
content {
allowed_origins = "${var.cors_allowed_origins}"
}
}
}
默认值[]
就可以了。