首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于由cidrsubnet分配的两个值?

关于由cidrsubnet分配的两个值?
EN

Stack Overflow用户
提问于 2021-03-31 01:31:45
回答 1查看 133关注 0票数 2

我试图将两个子网列表连接到module.vpc.public_subnets中。

代码语言:javascript
复制
module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
  ...
  public_subnets = [
    concat(local.ext_a_subnets,local.ext_b_subnets)
  ]
  ...
}
...
locals {
  ...
  ext_a_subnets = [
    for num in range(length(local.azs)) :
    cidrsubnet(local.cidr, 8, num + 10)
  ]
  ext_b_subnets = [
    for num in range(length(local.azs)) :
    cidrsubnet(local.cidr, 8, num)
  ]
  ...
}

当我运行terraform validate时,会得到以下错误:

代码语言:javascript
复制
Error: Invalid value for module argument

  on main.tf line 45, in module "vpc":
  45:   public_subnets = [
  46:     concat(local.ext_a_subnets,local.ext_b_subnets)
  47:   ]

The given value is not suitable for child module variable "public_subnets"
defined at .terraform/modules/vpc/variables.tf:151,1-26: element 0: string
required.

但是,将cidrsubnet循环直接放在module.vpc.public_subnets中可以很好地工作:

代码语言:javascript
复制
  public_subnets = [
    for num in range(length(local.azs)) :
    cidrsubnet(local.cidr, 8, num + 10)
  ]

这不是我需要的功能吗?很新的地形,所以非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 01:34:13

合并返回一个列表。因此,假设您的concat实际工作,它应该是:

代码语言:javascript
复制
module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
  ...
  public_subnets = concat(local.ext_a_subnets,local.ext_b_subnets)
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66880467

复制
相关文章

相似问题

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