azure - 通过 terraform 一起使用 count 和 for_each 来创建 AKS 附加节点池
问题描述
下面的 Terraform 片段以完成 0/1/2 个额外的节点池,
resource "azurerm_kubernetes_cluster_node_pool" "aksnp" {
lifecycle {
ignore_changes = [
node_count
]
}
count = local.additional_node_pool_required == "true" ? 1 : 0
for_each = var.additional_node_pools
kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
name = each.value.node_os == "Windows" ? substr(each.key, 0, 6) : substr(each.key, 0, 12)
node_count = each.value.node_count
vm_size = each.value.vm_size
availability_zones = each.value.zones
max_pods = each.value.max_pods
os_disk_size_gb = each.value.os_disk_size_gb
os_type = each.value.node_os
vnet_subnet_id = var.vnet_subnet_id
node_taints = each.value.taints
enable_auto_scaling = each.value.cluster_auto_scaling
min_count = each.value.cluster_auto_scaling_min_count
max_count = each.value.cluster_auto_scaling_max_count
}
不幸的是,它不起作用。它会引发如下明显的错误,
The Terraform configuration must be valid before initialization so that
Terraform can determine which modules and providers need to be installed.
╷
│ Error: Invalid combination of "count" and "for_each"
│
│ on main.tf line 99, in resource "azurerm_kubernetes_cluster_node_pool" "aksnp":
│ 99: for_each = var.additional_node_pools
│
│ The "count" and "for_each" meta-arguments are mutually-exclusive, only one should be used to be explicit about the number of resources to be created.
我需要您的一些指导和帮助,因为我很困惑如何使用设置创建节点池?
我需要 for_each,因为我希望为客户提供一个选项来创建尽可能多的额外节点池。
我还要求某些业务用户可能不会请求额外的节点池。
我们如何解决这两个问题?
在 Terraform 中没有简单的方法吗?
PS:如何将父模块(local_additional_pools_required)的值设置为false?因为我希望父模块指示子模块(AKS)是否要创建其他节点池。
解决方案
您也可以使用for_each
创建条件资源:
for_each = local.additional_node_pool_required == "true" ? var.additional_node_pools : {}
推荐阅读
- github-api - 附加到 Github Check 运行
- opencv - 如何或我们可以使用 Hu 矩在 python 中使用 opencv 更改对象的形状和宽度
- awk - 如何仅打印前后包含空行的行
- .net - .NET Core 5.0 中的 ModelState 密钥大小写不一致
- java - 代理设置不适用于eclipse,点击eclipse市场时出错
- javascript - Mongoose 不会产生结果,但 mongo shell 会
- math.sqrt - 为什么我得到输出 0.0?包裹丢失或方法有问题?
- python - 我怎么知道用户在 tkinter 中点击了哪个按钮
- html - 如何将扫描仪循环动画旋转到水平
- svg - 无法在 illustrator 中加载的 SVG - 说“此 SVG 无效。打开前验证它。”