Terraform版本约束语法

警告
本文最后更新于 2023-12-14 11:39,文中内容可能已过时。

官方文档

版本约束语法

Terraform 的版本约束语法与 Bundler 和 NPM 等其他依赖管理系统使用的语法非常相似。

1
version = ">= 1.2.0, < 2.0.0"

版本约束包含一个或多个条件的字符串文字, 这些条件以逗号分隔。

可用运算符:

  • =: 只允许某一个版本
  • !=: 排除确切的版本号
  • >, >=, <, <=: 与指定的版本比较大小
  • ~>: 仅允许最右边的版本增加, 例如
    • ~> 1.0.4: 允许 1.0.51.0.10, 但不允许 1.1.0.
    • ~> 1.1: 允许 1.21.10, 但不允许 2.0.

预发布版本, 例如1.2.0-beta。只能通过精确版本约束(=操作符或无操作符)进行选择。预发布版本不与不精确的操作符(如>=、~>等)匹配。

版本约束行为

当一个版本号完全满足条件约束时, 这个版本会被认为是可接受版本。 如果没有可接受版本, 那么 terraform 尝试下载符合约束版本的最新版本。 如果没有任何版本符合要求, 那么 terraform 将不会执行任何的 plan, apply 等操作

最佳实践

Module

  • 当依赖第三方模块时, 指定特定版本以确保仅在您想要更新时自行进行更新。
  • 对于组织内维护的模块, 如果一致地使用语义版本控制或者有明确定义的发布流程来避免不需要的更新, 则指定版本范围可能是合适的。

Terraform Core 和 Provider

  • 可重用模块只应限制其最低允许的 Terraform 和 Provider 版本,如 >= 0.12.0。这有助于避免已知的不兼容性,同时允许模块的使用者灵活升级到较新的 Terraform 版本,而不需要修改模块。
  • 根模块应该使用 ~> 约束来为它们依赖的每个 Provider 设置版本的下限和上限。
请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%