[英]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.