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

_磐安网站建设_高性价比

小七 141 0

HashiCorp terraform0.12预览:可靠的JSON语法

这是本系列文章的第八篇,重点介绍terraform0.12中的新特性。作为TerraForm0.12发布前的一部分,我们将发布一系列功能预览博客文章。本周的文章是关于在JSON和HCL之间建立一个清晰的1:1映射。Terraform从0.1版开始接受JSON作为HCL的配置。但是,在0.12版之前实现了这一点有很多缺点。terraform0.12中HCL的改进包括HCL和JSON之间清晰的1:1映射,包括更清晰的错误消息和对注释的支持!这些改进使得使用HCL、JSON或两者都能很容易地使用Terraform。»HCL和JSONTerraform在terraform0.1中首次发布以来,它一直支持JSON作为备用配置格式。此外,Terraform从0.1版开始就支持在同一个模块中混合使用JSON和HCL配置。JSON和HCL都是Terraform重要的一级配置格式。Terraform以前版本中的JSON映射有许多缺点。在某些情况下,感觉JSON并不是工具中的第一类解决方案。我们一直认为JSON是Terraform的第一类输入,并将继续这样做,因此terraform0.12的很大一部分是在HCL和JSON之间有一个干净的1:1映射,并确保JSON支持HCL的每个特性。terraform0.12实现了这些目标。在Terraform的未来版本中,我们还将支持本地工具将HCL转换为JSON,并将JSON干净地转换为HCL(包括注释)。这使额外的工具在处理Terraform配置时有了更大的能力,也使人们能够用他们觉得舒服的任何语言编写配置。»错误消息改进在0.12之前的版本中,到JSON的配置映射在文档中只是很弱地指定,有许多违反直觉的映射行为,并且有一种趋势,就是会默默地忽略那些使调试困难的畸形构造。terraform0.12包含了一个新的JSON配置实现,它比以前的版本更健壮,可以解决这些限制。特别是,基于JSON的配置解码器在输入不能准确映射到预期配置结构的任何情况下都会产生错误。下面的示例显示了一个无效配置Terraform 0.12中产生的错误:{"变量":{"example":"foo"}}错误:JSON值类型不正确打开example.tf.json第3行,变量:3: "example":"foo"JSON对象或JSON数组是必需的,表示一个或多个"可变"块。Terraform现在知道顶级名称"variable"表示本机语法中的一组变量块,因此它可以看到属性"example"的值应该是一个对象,表示HCL中变量"example"块的内容。因此,可以通过将字符串值替换为对象来更正上述示例:{"变量":{"示例":{"default":"foo"}}}为了正确地生成这样的错误消息,新的JSON解码器必然比以前的版本更严格。因此,为先前版本生成的基于JSON的配置可能需要稍微调整以适应新的约束。»JSON中的注释JSON的一个很大的限制是缺少注释支持。terraform0.12在JSON对象中以特殊键"/"的形式包含了一个简单的"注释"形式。下面的示例显示Terraform 0.12 JSON配置中的注释:{"变量":{"示例":{"//":"忽略此属性","default":"foo"}}}在嵌套块对象中,任何名为"/"的特性都将被忽略。虽然我们建议对手工编写的配置使用本机语法,但JSON注释特性可能有助于在生成的配置中包含注释,例如标识哪个程序生成了文件。»升级指南terraform0.12中新的JSON解析器必须比以前的版本更严格。因此,现有的JSON配置可能需要更改才能与terraform0.12一起使用。如果在Terraform中使用JSON,请运行Terraform validate或Terraform计划并更正任何错误消息。»下一个这是预览Terraform0.12系列博客文章的第8部分。带有JSON的清晰的1:1映射将在今年夏天晚些时候在terraform0.12中发布。要了解有关如何升级到Terraform0.12的更多信息,请阅读升级说明,随着Terraform0.12的发布,它将不断更新。如果您对这些更改有任何反馈或疑虑,请通过公共邮件列表与Terraform团队沟通。