terraform版本控制方案如何?

时间:2019-10-26 09:35:31

标签: terraform versioning

我已经使用了 terraform 一段时间了,我一直怀疑的是,terraform-core使用哪种 versioning方案

它是语义版本又名semver吗?因为如果是这样,为什么要进行次要版本的升级(例如,将项目从0.11.X升级到0.12.Y时)会用那个0.12.x写入terraform的状态,并且不允许将其降级到0.11.x?

另一件事是相关的:为什么他们选择以 0.X.X 而不是1.X.X开头版本号?这有什么意思吗?

2 个答案:

答案 0 :(得分:1)

它们确实使用了语义版本控制,但是它们的解释与大多数版本略有不同。

以下是Hashicorp员工关于GitHub issue的版本控制方法的答案:

  

在HashiCorp,我们非常重视v1.0的想法,一旦Terraform到达那里,它将代表着强大的兼容性前景,因为我们认为配置语言,内部体系结构,CLI和其他产品功能很适合长途跋涉。

     

Terraform的当前状态更加微妙。我们仍然认为向后兼容非常重要,因为我们知道当今有很多生产基础设施都取决于Terraform。因此,我们必须做出妥协,以便在实现v1.0承诺方面不断取得进展。虽然我们将这些干扰降到最低,但始终无法避免,因此我们尝试在变更日志中以及升级指南中(如果适用)对它们进行明确说明。

     

考虑到这一点,目前我们建议始终在升级之前参考变更日志,因为这是我们注意到升级期间适用的所有特殊注意事项的主要手段。我们试图保留重大的突破性更改,以增加版本号中的第二个位置(传统上为“次要”),这代表了我们朝着最终的v1.0迈进时的“主要”发展里程碑。

     

由于Terraform是应用程序而非库,因此我们不打算遵循该字母的语义版本约定,但是由于它们确实代表了通用的版本习惯用法,因此我们很可能会在精神上遵循它们,因为我们当然希望尽可能清楚。正如@kshep指出的那样,v0发行版在semver约定中是特殊的,但是semver中的v1.0的含义与我们打算解释它的方式大致一致。

     

很抱歉,我们的版本编号做法在这里引起了混乱;根据这些反馈,我们将在发布每个版本时尝试更清楚地说明每个版本的重要性和风险,并致力于就我在上文中写的内容写一些更明确的文档。

参考:https://github.com/hashicorp/terraform/issues/15839#issuecomment-323106524

答案 1 :(得分:1)

迟到总比不到好:https://www.hashicorp.com/blog/announcing-hashicorp-terraform-1-0-general-availability

从这里开始,您可以期待定期的语义版本控制。