首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取terraform中元组的第一个元素

获取terraform中元组的第一个元素
EN

Stack Overflow用户
提问于 2021-09-17 07:44:46
回答 1查看 106关注 0票数 0

我正在尝试部署我的EKS节点,只有一个子网,但是我不知道如何只给资源分配一个子网。我给你看我的代码:

代码语言:javascript
运行
复制
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

另一方面,我有一个正常的任务来创建子网,并将输出提供给我的所有代码:

代码语言:javascript
运行
复制
resource "aws_subnet" "private" {
  count = length(local.subnet_priv)
  vpc_id = var.vpc_id[terraform.workspace]
  cidr_block = local.subnet_priv[count.index]
  availability_zone = element(lookup(var.availability_zones, terraform.workspace), count.index)
  map_public_ip_on_launch = false

所以..。我不知道如何从我的subnet_ids参数中只获取元组的第一个子网。现在,正如你所看到的,我尝试了所有的方法,但是我尝试了不同的方法,但是没有成功(aws_subnet.private[0].*.id , aws_subnet.private[0].id, etc)

有什么想法吗?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 11:03:58

EKS节点组subnet_ids参数需要一个元组。在最初的示例subnet_ids = aws_subnet.private.*.id中,使用了拆分运算符。鱼叉运算符(*)实质上创建了一个包含所有可用资源的元组,在本例中是所有可用子网。

如果我们只想传递所有可用子网中的一个子网,我们必须创建一个包含单个元素的元组。我们可以通过从所有现有元素中提取第一个元素来做到这一点,例如:

代码语言:javascript
运行
复制
subnet_ids = [aws_subnet.private[0].id]

虽然这可能行得通,但我个人并不认为这是一个优雅的解决方案。当然,实现相同结果的更好方法是修改local.subnet_priv元组,使其仅包含一个子网id。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69219606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档