Terraform:如何在不更改Terraform版本的情况下升级提供程序

时间:2019-03-07 22:04:24

标签: terraform-provider-aws

当我尝试运行Terraform Apply时,我看到错误:

aws_glue_catalog_database.test: Provider doesn't support resource: aws_glue_catalog_database

看起来我的提供程序很旧,因为terraform版本显示了provider.aws v1.6.0,实际上,我可以在另一个具有相同terraform版本但使用较新的provider.aws v2.0.0的文件夹中启动胶水

Terraform v0.11.10
+ provider.archive v1.0.0
+ provider.aws v1.6.0
+ provider.null v1.0.0
+ provider.template v1.0.0

我尝试升级提供程序,但保持terraform版本v0.11.10不变。为此,我运行terraform init -upgrade,但看到以下警告:

terraform init -upgrade
Initializing the backend...
Backend configuration changed!

Terraform has detected that the configuration     specified for the backend
has changed. Terraform will now check for existing state in the backends.


Do you want to migrate all workspaces to "s3"?
  Both the existing "s3" backend and the newly     configured "s3" backend
 support workspaces. When migrating between      backends, Terraform will copy
  all workspaces (with the same names). THIS WILL     OVERWRITE any conflicting
  states in the destination.

  Terraform initialization doesn't currently migrate     only select workspaces.
  If you want to migrate a select number of     workspaces, you must manually
  pull and push those states.

  If you answer "yes", Terraform will migrate all     states. If you answer
  "no", Terraform will abort.

我决定说“不”,因为上述警告使我感到恐惧。

我确实有一个后端“ s3”资源来远程将状态存储在s3中,并且有几个工作区。我不理解如果使用上述命令升级提供程序,为什么以及如何更改后端和工作区;是否会破坏我的系统。

有人知道我不打扰别人说可以吗?还是应该在不更改terraform版本的情况下运行哪个terraform cmd来升级提供程序?谢谢。

1 个答案:

答案 0 :(得分:1)

您正在进行主要版本升级,因此恐怕总会有风险。

以下一些链接可以帮助您突出显示风险(如果您尚未看到它们的话):

在执行任何操作之前,我建议先备份存储在远程S3存储桶中的状态文件。如果您的基础结构是相当静态的(或者您有使其静态的机制),则如果状态严重错误,您总是可以将状态的旧备份放回S3中,而不会引起问题,因为在升级过程中不会发生任何问题

我不知道您的设置,但理想情况下,您首先应该在开发环境中执行此操作,这有望缓解您对更改状态文件的紧张。