如何使用for循环在地形中生成多个自定义地图


"${var.name}-4hr-backup" = {
schedule = "@every 4h"
template = {
includeClusterResources = true
includedNamespaces      = "${var.included_namespaces}"
includedResources       = "${var.included_resource}"
excludedNamespaces      = "${var.excluded_namespaces}"
excludedResources       = "${var.excluded_resource}"
storageLocation         = "aws"
snapshotVolumes         = true
ttl                     = "24h0m0s"
}
}

我有上面的映射,我想根据k8s集群中的名称空间数量进行自定义和重新创建。

我计划使用for循环在名称空间列表上迭代,以生成适当数量的映射。

例如,类似于列表的内容:namespace_4hr_backup=[a,b,c]然后使用循环:在namespace_4hr_backup中创建名称:

a-4hr-backup = {
schedule = "@every 4h"
template = {
includeClusterResources = true
includedNamespaces      = "a"
includedResources       = "${var.included_resource}"
excludedNamespaces      = "${var.excluded_namespaces}"
excludedResources       = "${var.excluded_resource}"
storageLocation         = "aws"
snapshotVolumes         = true
ttl                     = "24h0m0s"
}
}
b-4hr-backup = {
schedule = "@every 4h"
template = {
includeClusterResources = true
includedNamespaces      = "b"
includedResources       = "${var.included_resource}"
excludedNamespaces      = "${var.excluded_namespaces}"
excludedResources       = "${var.excluded_resource}"
storageLocation         = "aws"
snapshotVolumes         = true
ttl                     = "24h0m0s"
}
}
c-4hr-backup = {
schedule = "@every 4h"
template = {
includeClusterResources = true
includedNamespaces      = "c"
includedResources       = "${var.included_resource}"
excludedNamespaces      = "${var.excluded_namespaces}"
excludedResources       = "${var.excluded_resource}"
storageLocation         = "aws"
snapshotVolumes         = true
ttl                     = "24h0m0s"
}
}

最好的方法是什么?我看了一下文档,但我不太清楚,因为我只看到了基本的例子。

您不能创建单独的映射,但可以创建映射的映射。例如:

locals {
namespace_4hr_backup = ["a","b","c"]

namespace_maps = {
for name in local.namespace_4hr_backup:
"${name}-4hr-backup" => {
schedule = "@every 4h" 
template = {
includeClusterResources = true
includedNamespaces      = "${name}"
includedResources       = "${var.included_resource}"
excludedNamespaces      = "${var.excluded_namespaces}"
excludedResources       = "${var.excluded_resource}"
storageLocation         = "aws"
snapshotVolumes         = true
ttl                     = "24h0m0s"
}
}    
}   
}

最新更新