簡體   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