【发布时间】:2021-08-06 13:16:06
【问题描述】:
我正在尝试使用 terraform 标记 docker swarm 实例 我将变量和局部变量定义为 variables.tf
variable "instance_count" {
default = "3"
}
variable "instance_type" {
default = "t2.micro"
}
variable "aws_region" {
default = "us-east-1"
}
variable "ami" {
default = "ami-09e67e426f25ce0d7"
}
variable "host_name" {
type = map(number)
default = {
"Manager" = 1
"Worker" = 2
}
}
当我引用此列表的每个值以将其作为标签分配给 ec2 实例时,如下所示 ec2instance.tf
resource "aws_instance" "swarm_instance" {
count = var.instance_count
ami = var.ami
instance_type = var.instance_type
key_name = aws_key_pair.dockerswarm.key_name
tags = {
Name = "Swarm_Instance-${count.index + 1}"
}
tags = {
Name = "${local.expanded_names}"
}
locals {
expanded_names = {
for name, count in var.host_name : name => [
for i in range(count) : format("%s-%02d", name, i+1)
]
}
}
Terraform 抱怨
local.expanded_names is object with 2 attributes
我尝试使用${local.expanded_names.value},但后来它抱怨 object does not have an attribute named "value"。
那么当 terraform 中 value 属性不可用时如何从列表中检索值。
【问题讨论】:
-
你如何迭代
expanded_names本地?理想情况下,您的问题应该形成一个minimal reproducible example,这样更容易理解如何重现您的特定问题并指出您可能犯了错误的地方。 -
您使用
tags的完整代码是什么? -
我已经按照 cmets 更新了上面的代码。我想获取本地扩展名的值。
标签: terraform terraform-provider-aws