升级Terraform提供程序

16

在现有的 Terraform 目录中:

~ terraform version  
Terraform v0.11.11
+ provider.aws v1.51.0

如果我创建了一个新的Terraform目录:

~ terraform version
Terraform v0.11.11
+ provider.aws v1.55.0

如何升级我的 provider.aws?如果我在我的 .tf 文件中的 provider "aws" 中设置 version = "~> 1.55.0",我会收到一个错误:

* provider.aws: no suitable version installed
  version requirements: "~> 1.55.0"
  versions installed: "1.51.0"

我原本期望找到一个叫做terraform update的命令或类似的东西,但我找不到。

我不能升级这个提供者吗?我需要删除状态,重新运行init然后再refresh吗?还是有更好的方法?

3个回答

24

解决此问题有两种方法:

  1. 直接删除 terraform 缓存rm -fr .terraform,然后再次执行terraform init。如果 Terraform 状态在该文件夹中,则可能会有危险。
  2. 实际上,在 init 命令中有一个-upgrade 参数,以在约束限制范围内升级提供程序版本。

22

terraform init -upgrade

使用terraform init -upgrade命令升级每个提供程序的最新可接受版本。

升级之前

ubuntu@staging-docker:~/terraform$ terraform -version
Terraform v0.12.8
+ provider.aws v2.16.0
+ provider.template v2.1.2

升级命令

ubuntu@staging-docker:~/terraform$ terraform init -upgrade
Upgrading modules...
- asg in asg
- ecs in ecs
- lambda in lambda
- lt in lt

Initializing the backend...

Initializing provider plugins...
- Checking for available provider plugins...
- Downloading plugin for provider "aws" (hashicorp/aws) 2.27.0...
- Downloading plugin for provider "template" (hashicorp/template) 2.1.2...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.aws: version = "~> 2.27"
* provider.template: version = "~> 2.1"

升级后

ubuntu@staging-docker:~/terraform$ terraform version
Terraform v0.12.8
+ provider.aws v2.27.0
+ provider.template v2.1.2

2
只需运行terraform init来升级AWS插件版本,无需删除状态文件。

8
只有在指定了其他答案中提到的“-upgrade”选项时,它才会进行升级。 - clay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接