如果未提供Terraform中的参数值,是否有条件地忽略该参数?

如果未提供Terraform中的参数值,是否有条件地忽略该参数?,terraform,google-cloud-sql,terraform-provider-gcp,Terraform,Google Cloud Sql,Terraform Provider Gcp,我正在使用resource创建一个仅具有私有IP的云实例,并从文件或命令行参数中获取变量的值,或者根本不提供任何值 我试图实现的是,仅当提供了私有网络时才创建私有IP实例,并且仅当提供了其值时才包含参数。这里的问题是这个变量不接受空字符串(“”),因为它验证下面的正则表达式 “项目/((?:(?:[-a-z0-9]{1,63}\\)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9]):)(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[

我正在使用resource创建一个仅具有私有IP的云实例,并从文件或命令行参数中获取变量的值,或者根本不提供任何值

我试图实现的是,仅当提供了私有网络时才创建私有IP实例,并且仅当提供了其值时才包含参数。这里的问题是这个变量不接受空字符串(“”),因为它验证下面的正则表达式
“项目/((?:(?:[-a-z0-9]{1,63}\\)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9]):)(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0 9]))/global/networks/(?:[a-z0 9])/(?:[a-z0 9])


如何创建一个可配置的模块(仅在提供专用网络的情况下创建专用IP实例,否则完全忽略参数),并且不强制要求变量的值?

旧的方法是传递一个空字符串(
“”
)对于参数,提供者将按约定忽略它

不幸的是,这并不是在所有提供程序中都能做到的,因此如果由于参数验证而无法传递空字符串,那么您现在就被卡住了

您可以选择允许您传递一个空字符串,创建第二个模块,该模块的区别仅在于它是否有专用网络,或者等待Terraform 0.12,这将使Terraform core完全忽略该参数

在我看来,最后一个选项是最好的,但如果您有紧急需求(目前没有0.12的预期发布日期,除非它准备就绪)然后我现在将模块一分为二,让您能够实现这一点,然后您可以删除模块的私有克隆,并在发布0.12并升级到它时使用
null