繁体   English   中英

在 Terraform 中是否有等效的省略?

[英]Is there an equivalent to omit in Terraform?

我正在处理我的 Terraform 代码,我想使用相同的代码,无论变量是否设置或等于"" 但是,如果我在aws_vpc模块中传递带有""的变量,则会引发异常,说明需要有效的 cidr。

如果是 Ansible,我会使用| omit | omit filter 省略参数,如果未设置变量,则不将其传递给模块。

有代码。

module "server_vpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "servers_vpc"
  cidr = var.main_cidr
  secondary_cidr = [var.secondary_cidr]

  azs             = var.azs
  public_subnets  = local.public_subnets
  private_subnets = var.private_subnets

  enable_nat_gateway = true
  create_igw         = true
}

在此代码中,如果变量等于"" (默认值),则public_su.nets等于[var.main_cidr] ,如果设置了变量,则public_su.nets等于[var.main_cidr, var.secondary_cidr]

但是没有像我想要的那样工作的部分是带有secondary_cidr = [var.secondary_cidr]的行。
当变量包含有效的 cidr 时,它可以工作,但是当变量未设置且等于默认值""时,Terraform 从 aws vpc 模块中引发错误,解释需要有效的 cidr。

所以我想要一种使用模块创建此 vpc 的方法,但如果变量等于""则不设置参数secondary_cidr

我希望我很清楚:)

根据此特定模块的文档secondary_cidr不是必需的参数。 在这种情况下,您不必提供空字符串。 您要么完全省略secondary_cidr ,要么将null分配给它。 由于secondary_cidr需要一个数组,因此空数组[]很可能也可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM