云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名注册_电子数据库_企业级

小七 141 0

HashiCorp terraform0.12预览:条件运算符改进和有条件省略的参数

这是本系列文章的第五篇,重点介绍terraform0.12中的新特性。作为TerraForm0.12发布前的一部分,我们将发布一系列功能预览博客文章。本周的文章是关于条件运算符的改进和引入有条件省略的参数。Terraform已经支持基本条件句两年了,但是条件句有着已知的主要局限性。在Terraform0.12中,这些限制已被解除,条件条件在所有情况下都能正常工作。terraform0.12还引入了空值,用于有条件地忽略一个值。»条件算子改进条件运算符。。。: ... 是为了解决配置中的一些常见问题而引入的。terraform0.12之前的最初实现由于Terraform的基本原理而具有已知的局限性。虽然条件运算符有助于改进配置,但这些限制是出乎意料的、不直观的,并且常常在许多方面阻碍地形。特别是,在v0.12之前,条件运算符只适用于基元类型(而不是列表或映射),并且将始终计算两个值表达式,即使只返回一个值表达式。在Terraform 0.12中,这两个限制都被解除了。下面的示例显示了Terraform 0.12及更高版本的这种新的灵活性:#Terraform 0.12配置当地人{first_id=长度(azurerm_虚拟_机器.示例)>0?虚拟azurerm__机器.示例[0]。id:""桶=(变量环境=="开发"?[变量构建桶, 变量qa_bucket] : [变量生产铲斗])}在Terraform的早期版本中,上述示例将失败。即使列表非空,第一个本地first_id也会出错,因为Terraform计算了两个返回值。第二个本地存储桶将失败,因为Terraform不支持将列表和映射作为返回值。由于前面提到的terraform0.12:First Class表达式中的改进,上面的示例也更加可读。»有条件省略的参数terraformv0.12现在允许将特殊值null赋给一个参数,将其标记为"unset"。这可以与其他语言特性相结合,以便模块允许其调用者有条件地重写某个值,同时在未定义值的情况下保留默认行为。在terraform0.12之前的版本中,获取参数默认行为的唯一方法是根本不设置它。如果该值来自一个参数(变量、局部等),那么除了修改配置源之外,没有办法恢复到默认行为。这在很大程度上限制了模块的可配置性。下面的示例显示了在Terraform 0.12及更高版本中使用的null:#Terraform 0.12配置变量"override_private_ip"{类型=字符串默认值为空}资源"aws_instance""示例"{# ... (其他aws_实例参数)。。。私有ip=变量覆盖}以前,无法在保留与参数相关联的任何默认行为的同时为参数分配表达式。通过使用新的空值,aws_实例资源可以在没有提供覆盖的情况下动态分配私有IP地址,但是如果调用模块提供override_private_IP值,则可以设置显式IP地址。»升级指南对条件运算符的改进和null的引入并没有引入任何中断性的更改。»下一个这是预览Terraform0.12系列博客文章的第5部分。这些对条件运算符的改进和有条件省略参数的引入将在Terraform0.12中发布,该版本将于今年夏天晚些时候发布。要了解有关如何升级到Terraform0.12的更多信息,请阅读升级说明,随着Terraform0.12的发布,它将不断更新。如果您对这些更改有任何反馈或疑虑,请通过公共邮件列表与Terraform团队沟通。