如果未在 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 plan
或 terraform apply
将失败,因为提供者不再支持您指定的某些资源属性,或者它需要一个新的您没有设置的属性,或者资源被完全删除,或者您使用的一些输出发生了变化,等等...
关于 aws_s3_bucket
的 region
属性,我们刚刚发生了这种情况,我们指定了它,提供商已更新并且 plan
失败,因为您不再被允许明确指定 region
。
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 plan
或 terraform apply
将失败,因为提供者不再支持您指定的某些资源属性,或者它需要一个新的您没有设置的属性,或者资源被完全删除,或者您使用的一些输出发生了变化,等等...
关于 aws_s3_bucket
的 region
属性,我们刚刚发生了这种情况,我们指定了它,提供商已更新并且 plan
失败,因为您不再被允许明确指定 region
。