如果未在terraform中指定提供程序版本约束并且涉及重大更改,会发生什么情况

时间:2020-08-13 12:21:51

标签: amazon-web-services google-cloud-platform terraform terraform-provider-aws

terraform docs建议指定提供程序版本,以避免破坏更改。重大变化在这里意味着什么?

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

让我说我的提供者terraform块如下所示,其中我未设置版本限制

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

现在让我说我已经运行了terraform apply并创建了下面的基础设施,请考虑此时aws插件的版本是2.0.0。

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

由于此自动插件版本已升级到4.0.0,但由于我以前使用的是2.0.0,因此terraform计划可能会导致修改资源配置或删除并重新创建或破坏现有资源。

1 个答案:

答案 0 :(得分:1)

更新:可能,但不太可能。
娱乐:可能,但可能性更低。
删除:我不这么认为。

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

关于region的{​​{1}}属性,这只是发生在我们身上,我们指定了它,提供者得到了更新,aws_s3_bucket失败了,因为您不再被允许指定一个plan

相关问题