terraform中的Concat字符串和列表变量

terraform中的Concat字符串和列表变量,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我需要将cidr块列表以[“0.0.0.0/23”、“0.0.0.1/23”、…]等形式传递给模块 我有两个cidr块,它们来自子网数据源,我可以引用它们作为示例: cidr_blocks = [data.aws_subnet.subnet1.id,data.aws_subnet.subnet2.id] 我还有一个变量,取决于环境,有一个要传入的cidr_块的特定列表,设置为示例: custom_cidrs = [""0.0.0.0/23","0.0.0

我需要将cidr块列表以[“0.0.0.0/23”、“0.0.0.1/23”、…]等形式传递给模块

我有两个cidr块,它们来自子网数据源,我可以引用它们作为示例:

cidr_blocks = [data.aws_subnet.subnet1.id,data.aws_subnet.subnet2.id]
我还有一个变量,取决于环境,有一个要传入的cidr_块的特定列表,设置为示例:

custom_cidrs = [""0.0.0.0/23","0.0.0.1/23","0.0.0.2/23"]
我想做的是在模块中,将所有这些CIDR合并在一起创建一个列表。我尝试了一些不同的方法,包括concat和list()。我就是不懂语法

对于某些上下文,它们将没有要设置的自定义cidr块,只有子网cidr,因此在这种情况下,我的自定义cidr将设置为:

custom_cidrs = []
任何关于如何将两个输出和自定义列表合并为一个的帮助都将不胜感激

我想我可能必须首先从两个输出创建一个列表,然后将两个列表合并在一起,但不能完全确定。我能用一个命令完成吗


我正在使用terraform版本0.12.28

如果我理解正确,您希望连接来自数据源和自定义列表的CIDR块。下面是一个如何做到这一点的示例

        variable "custom_cidrs" {
          default = [
            "0.0.0.0/23",
            "0.0.0.1/23",
            "0.0.0.2/22"
          ]
        }
        
        data "aws_subnet" "private" {
          id = "subnet-000000qq"
        }
        
        data "aws_subnet" "public" {
          id = "subnet-000001qq"
        }
        
        locals {
          all_cidrs = setunion(
            [data.aws_subnet.private.cidr_block, data.aws_subnet.public.cidr_block],
            var.custom_cidrs
          )
        }
        
        output "all_cidrs" {
          value = local.all_cidrs
        }
输出如下所示

[PS][7.0.2]tst>地形应用--自动批准-var“region=us-west-2”
data.aws_subnet.public:正在刷新状态。。。
data.aws_subnet.private:正在刷新状态。。。
申请完成!资源:添加0个,更改0个,销毁0个。
产出:
所有苹果酒=[
“0.0.0.0/23”#来自var的自定义CIDR块
“0.0.0.1/23”#来自var的自定义CIDR块
“0.0.0.2/22”#来自var的自定义CIDR块
“xxx.xx.x.x/24”#专用子网CIDR块
“xxx.xx.x.x/24”#公共子网CIDR块
]

要引用连接的列表,请引用
local。所有CIDR

请编辑问题以显示您尝试了什么以及每次尝试时出现的错误?你应该可以使用
concat
,但是你提到它不起作用,如果不看看你尝试了什么和你得到的错误,很难理解为什么。这对我来说很有效,我学到了一些新东西。非常感谢:)