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



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

我试图实现的是,仅当提供了private_network时才创建私有IP实例,并且仅当提供其值时才包括_private_netwetwork_参数。这里的问题是,这个变量不接受空字符串(">),因为它验证了下面的正则表达式
"projects/((?:(?:[-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-z](?:[-a-z0-9]*[a-z0-9])?))$"

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

旧的方法是向参数传递一个空字符串(""),提供程序会按照惯例忽略它。

不幸的是,这还没有在所有提供者中的所有地方都完成,所以如果由于参数验证而无法传递空字符串,那么您现在就陷入了困境。

您可以选择向提供程序发出一个拉取请求,允许您传递一个空字符串,创建第二个模块,该模块的不同之处仅在于它是否有专用网络,或者等待Terraform 0.12,它将引入null值,然后使Terraform core完全忽略该参数。

最后一个选项在我看来是最好的,但如果你有紧急需求(目前除了0.12的发布日期外,没有其他预期的发布日期),那么我会暂时将模块一分为二,让你能够实现这一点,然后你可以放弃模块的私有克隆,并在0.12发布并升级到它时使用null值。

相关内容

  • 没有找到相关文章

最新更新