如何访问 Terraform 中的映射输出
How to access to a mapping output in Terraform
我在 tf 中有下一个任务:
resource "aws_eks_node_group" "managed_workers" {
for_each = var.nodegroups[terraform.workspace]
cluster_name = aws_eks_cluster.cluster.name
node_group_name = each.value.Name
node_role_arn = aws_iam_role.managed_workers.arn
subnet_ids = aws_subnet.private.*.id
tags = merge(
var.tags[terraform.workspace], {
"k8s.io/cluster-autoscaler/enabled" = "true"
"k8s.io/cluster-autoscaler/${var.cluster_name}" = "owned"
"type" = each.value.type
"Name" = each.value.Name
"ob" = each.value.ob
"platform" = each.value.platform
})
这个任务的输出是这样的:
{
"dev" = {
"ami_type" = "AL2_x86_64"
"arn" = "arn:aws:eks:eu-west-2:xxxxxxxxxxxxx"
"capacity_type" = "ON_DEMAND"
"cluster_name" = "EKS_Sps"
"disk_size" = 20
"force_update_version" = tobool(null)
"id" = "EKS_Sps"
"instance_types" = toset([
"m5a.large",
])
"labels" = tomap({
"autoscalergroup" = "pool"
"lifecycle" = "OnDemand"
})
"launch_template" = tolist([])
"node_group_name" = "EKS-Node-Name
"node_group_name_prefix" = ""
"node_role_arn" = "arn:aws:iam::xxxx:role/EKS_Sps-node"
"release_version" = "1.18.9-20210722"
"tags" = tomap({
"Name" = "EKS-nodegroup-name"
"environment" = "dev"
"k8s.io/cluster-autoscaler/EKS_Sps" = "owned"
"k8s.io/cluster-autoscaler/enabled" = "true"
"ob" = "all" <<<<----- I NEED THIS VARIABLE
"platform" = "api"
"type" = "EKS-TF-Sps"
})
}
现在我需要从这样的新任务访问使用此资源任务输出的其他任务的 'ob' 值变量。会是这样的:each.value.tags(map).ob
非常感谢!
据我了解,我认为应该是这样:
resource "aws_autoscaling_group_tag" "example" {
for_each = aws_eks_node_group.managed_workers
#...
tag {
key = "<some-key>"
value = each.value.tags["ob"]
}
}
我在 tf 中有下一个任务:
resource "aws_eks_node_group" "managed_workers" {
for_each = var.nodegroups[terraform.workspace]
cluster_name = aws_eks_cluster.cluster.name
node_group_name = each.value.Name
node_role_arn = aws_iam_role.managed_workers.arn
subnet_ids = aws_subnet.private.*.id
tags = merge(
var.tags[terraform.workspace], {
"k8s.io/cluster-autoscaler/enabled" = "true"
"k8s.io/cluster-autoscaler/${var.cluster_name}" = "owned"
"type" = each.value.type
"Name" = each.value.Name
"ob" = each.value.ob
"platform" = each.value.platform
})
这个任务的输出是这样的:
{
"dev" = {
"ami_type" = "AL2_x86_64"
"arn" = "arn:aws:eks:eu-west-2:xxxxxxxxxxxxx"
"capacity_type" = "ON_DEMAND"
"cluster_name" = "EKS_Sps"
"disk_size" = 20
"force_update_version" = tobool(null)
"id" = "EKS_Sps"
"instance_types" = toset([
"m5a.large",
])
"labels" = tomap({
"autoscalergroup" = "pool"
"lifecycle" = "OnDemand"
})
"launch_template" = tolist([])
"node_group_name" = "EKS-Node-Name
"node_group_name_prefix" = ""
"node_role_arn" = "arn:aws:iam::xxxx:role/EKS_Sps-node"
"release_version" = "1.18.9-20210722"
"tags" = tomap({
"Name" = "EKS-nodegroup-name"
"environment" = "dev"
"k8s.io/cluster-autoscaler/EKS_Sps" = "owned"
"k8s.io/cluster-autoscaler/enabled" = "true"
"ob" = "all" <<<<----- I NEED THIS VARIABLE
"platform" = "api"
"type" = "EKS-TF-Sps"
})
}
现在我需要从这样的新任务访问使用此资源任务输出的其他任务的 'ob' 值变量。会是这样的:each.value.tags(map).ob
非常感谢!
据我了解,我认为应该是这样:
resource "aws_autoscaling_group_tag" "example" {
for_each = aws_eks_node_group.managed_workers
#...
tag {
key = "<some-key>"
value = each.value.tags["ob"]
}
}