我正在使用AWS EKS 模塊 18.20.5,并且正在嘗試將值添加到深度嵌套的地圖中。地圖是
variable "eks_managed_node_groups" {
description = "Map of managed node group definitions to create"
type = any
default = {
management_cluster_on_demand = {
desired_capacity = 3
max_capacity = 10
min_capacity = 3
instance_types = ["c5.2xlarge"]
capacity_type = "ON_DEMAND"
k8s_labels = {
Environment = "testing"
GithubRepo = "infrastructure-modules-kubernetes-cluster"
GithubSource = "terraform-aws-modules"
}
additional_tags = {
cluster = "management_cluster_new"
}
block_device_mappings = {
xvda = {
device_name = "/dev/xvda"
ebs = {
volume_size = 50
volume_type = "gp2"
delete_on_termination = true
}
}
}
}
}
}
我的目標是在 ebs 部分添加一些額外的值,特別是
encrypted = true
kms_key_id = module.kms.arn
這將強制添加到節點組的任何卷使用 KMS 密鑰對其 EBS 卷進行加密。
我嘗試使用本地人添加值,但問題是當我到達 xbda 部分時,它會嘗試遍歷字串并失敗
locals {
managed_nodes = flatten([
for group in var.eks_managed_node_groups: [
for vol in group.block_device_mappings: [
for settings in vol: [
for values in settings: values
]
]
]
])
}
在運行 Terraform 計劃時,會導致以下錯誤
│ Error: Iteration over non-iterable value
│
│ on main.tf line 9, in locals:
│ 8: for settings in vol: [
│ 9: for values in settings: values
│ 10: ]
│
│ A value of type string cannot be used as the collection in a 'for' expression.
這甚至有可能實作嗎?謝謝。
uj5u.com熱心網友回復:
我認為以下應該做的作業:
locals {
eks_managed_node_groups = {
for group_name, group in var.eks_managed_node_groups:
group_name => merge(group, {block_device_mappings = {
for device_name, device in group.block_device_mappings:
device_name => merge(device,
{ebs=merge(device.ebs, {
encrypted = true
kms_key_id = "module.kms.arn"
})})
}})
}
}
導致:
{
"management_cluster_on_demand" = {
"additional_tags" = {
"cluster" = "management_cluster_new"
}
"block_device_mappings" = {
"xvda" = {
"device_name" = "/dev/xvda"
"ebs" = {
"delete_on_termination" = true
"encrypted" = true
"kms_key_id" = "module.kms.arn"
"volume_size" = 50
"volume_type" = "gp2"
}
}
}
"capacity_type" = "ON_DEMAND"
"desired_capacity" = 3
"instance_types" = [
"c5.2xlarge",
]
"k8s_labels" = {
"Environment" = "testing"
"GithubRepo" = "infrastructure-modules-kubernetes-cluster"
"GithubSource" = "terraform-aws-modules"
}
"max_capacity" = 10
"min_capacity" = 3
}
}
我沒有你的module.kms.arn,所以我只是用它作為字串"module.kms.arn"。所以你必須把它改回module.kms.arn.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/463331.html
標籤:亚马逊网络服务 地形 terraform-provider-aws
下一篇:您正在嘗試構建一個沒有約束的作業,這是不允許的java.lang.IllegalArgumentException
