是否可以将资源创建与循环(使用计数)结合起来,并根据地图的值有条件地跳过一些资源?
我知道我们可以分开做这些事情:
为了说明,假设我有一个地图列表:
variable "resources" {
type = "list"
default = [
{
name = "kafka"
createStorage = true
},
{
name = "elastic"
createStorage = false
},
{
name = "galera"
createStorage = true
}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以遍历上面的列表并使用资源中的“计数”创建三个资源:
resource "azurerm_storage_account" "test" {
name = "test${var.environment}${lookup(var.resources[count.index], "name")}sa"
location = "${var.location}"
resource_group_name = "test-${var.environment}-vnet-rg"
account_tier = "Standard"
account_replication_type = "GRS"
enable_blob_encryption = true
count = "${length(var.resources)}"
}
Run Code Online (Sandbox Code Playgroud)
但是,我还想跳过在其中创建资源的过程createStorage = false。因此,在上面的示例中,我想创建两个存储帐户,但跳过了“弹性”存储帐户。这可能吗?
在 terraform 0.12.x 中,您可以过滤掉列表 wherecreateStorage=true并将其用于计数表达式
variable "resources" {
type = "list"
default = [
{
name = "kafka"
createStorage = true
},
{
name = "elastic"
createStorage = false
},
{
name = "galera"
createStorage = true
}
]
}
locals {
resources_to_create = [
for resource in var.resources :
resource
if resource.createStorage
]
}
resource "azurerm_storage_account" "test" {
count = length(local.resources_to_create)
name = "test${var.environment}${lookup(local.resources_to_create[count.index], "name")}sa"
location = var.location
resource_group_name = "test-${var.environment}-vnet-rg"
account_tier = "Standard"
account_replication_type = "GRS"
enable_blob_encryption = true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2567 次 |
| 最近记录: |