![](/img/trans.png)
[英]Terraform - Iterate over a list generated from a for_each on a data block
[英]Looping over map variable using for_each expression in terraform
我有變量,我想在 terraform 中使用 for_each 進行迭代,以創建子模塊的多個實例 - node_groups,它是 eks 模塊的一部分。 這是我的變量:
variable "frame_platform_eks_node_groups" {
type = map
default = {
eks_kube_system = {
desired_capacity = 1,
max_capacity = 5,
min_capacity = 1,
instance_type = ["m5.large"],
k8s_label = "eks_kube_system",
additional_tags = "eks_kube_system_node"
},
eks_jenkins_build = {
desired_capacity = 1,
max_capacity = 10,
min_capacity = 1,
instance_type = ["m5.large"],
k8s_label = "eks_jenkins_build",
additional_tags = "eks_jenkins_build_node"
}
}
}
這是我的 node_groups 子模塊,它是模塊 eks 的一部分。
module "eks" {
...
node_groups = {
for_each = var.frame_platform_eks_node_groups
each.key = {
desired_capacity = each.value.desired_capacity
max_capacity = each.value.max_capacity
min_capacity = each.value.min_capacity
instance_types = each.value.instance_type
k8s_labels = {
Name = each.value.k8s_label
}
additional_tags = {
ExtraTag = each.value.additional_tags
}
}
當我運行 terraform 計划時,我收到以下錯誤:
15: each.key = {
If this expression is intended to be a reference, wrap it in parentheses. If
it’s instead intended as a literal name containing periods, wrap it in quotes
to create a string literal.
我的意圖顯然是使用 each.key 引用從 map 變量中獲取 eks_kube_system 和 eks_jenkins_build 值。 但有些不對勁。 你有什么建議我做錯了嗎?
謝謝!
它不完全清楚node_groups
是什么,因為它沒有在你的問題中定義,但假設它是一個地圖列表,那么代碼應該是:
module "eks" {
...
node_groups = [
for k,v in var.frame_platform_eks_node_groups:
{
desired_capacity = v.desired_capacity
max_capacity = v.max_capacity
min_capacity = v.min_capacity
instance_types = v.instance_type
k8s_labels = {
Name = v.k8s_label
}
additional_tags = {
ExtraTag = v.additional_tags
}
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.