如果未在 Terraform 中指定提供者版本约束并且涉及重大更改,会发生什么

what happens if provider version constraint is not specified in terraform and breaking changes are involved

terraform 文档建议指定提供程序版本以避免破坏性更改。这里的重大变化是什么意思?

重大更改是否意味着 Terraform 计划显示由于 terraform init 上的自动提供程序版本升级而删除和重新创建资源

假设我有我的提供商地形块,如下所示,我没有设置版本约束

provider "aws" {
  region                  = "us-west1"
  shared_credentials_file = "/home/ubuntu/.aws/credentials"
  profile                 = "default"
}

现在可以说我已经 运行 terraform 应用并创建了基础设施 让我们考虑 aws 插件版本是 2.0.0 此时。

让我们说一个月后我已经克隆了 repo 并做了 terraform init 现在让我们说 aws 插件版本是 4.0.0 因为没有版本限制所以获取了最新版本

现在 terraform plan 是否有可能由于此自动插件版本升级到 4.0.0 版而导致修改资源配置或删除和重新创建或破坏现有资源,但之前我使用的是 2.0.0。

更新:可能,但不太可能。
娱乐:可能,但可能性更小。
删:我觉得不是。

最有可能发生的事情是您的 terraform planterraform apply 将失败,因为提供者不再支持您指定的某些资源属性,或者它需要一个新的您没有设置的属性,或者资源被完全删除,或者您使用的一些输出发生了变化,等等...

关于 aws_s3_bucketregion 属性,我们刚刚发生了这种情况,我们指定了它,提供商已更新并且 plan 失败,因为您不再被允许明确指定 region