首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Terraform工作区迁移到Terraform错误

将Terraform工作区迁移到Terraform错误
EN

Stack Overflow用户
提问于 2021-03-23 08:17:02
回答 2查看 1.4K关注 0票数 3

我正在尝试将项目的CLI工作区迁移到Terraform。我正在使用Terraform版本0.14.8并遵循官方指南这里

代码语言:javascript
复制
$ terraform0.14.8 workspace list                 
  default
* development
  production
  staging

目前,该项目使用S3远程状态后端配置。

代码语言:javascript
复制
terraform {
  backend "s3" {
    profile              = "..."
    key                  = "..."
    workspace_key_prefix = "environments"
    region               = "us-east-1"
    bucket               = "terraform-state-bucketA"
    dynamodb_table       = "terraform-state-bucketA"
    encrypt              = true
  }

我将后端配置更改为:

代码语言:javascript
复制
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "orgA"

    workspaces {
      prefix = "happyproject-"
    }
  }

并执行terraform0.14.8 init以开始状态迁移过程。预期的行为将是在Terraform中创建3个工作区:

  1. 开心项目-发展
  2. 欢乐计划-分期
  3. 快乐项目-生产

但是,我得到以下错误:

代码语言:javascript
复制
$ terraform0.14.8 init                           
Initializing modules...

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.

Terraform detected that the backend type changed from "s3" to "remote".

Error: Error looking up workspace

Workspace read failed: invalid value for workspace

我还启用了跟踪级别日志,就在它抛出错误之前,我可以看到以下内容:2021/03/23 10:08:03 [TRACE] backend/remote: looking up workspace for orgA/

注意orgA/后面的空字符串和前缀的省略!我猜TF试图查询Terraform的默认工作区(这是一个空字符串),但失败了。我根本没有使用default工作区,它只是在执行terraform0.14.8 init时出现。指南提到:

代码语言:javascript
复制
Some backends, including the default local backend, allow a special default workspace that doesn't have a specific name. If you previously used a combination of named workspaces and the special default workspace, the prompt will next ask you to choose a new name for the default workspace, since Terraform Cloud doesn't support unnamed workspaces:

但是,它从不提示我为默认工作区选择名称。任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-10 09:46:56

我最后做的是

  1. 在Terraform中创建空工作区
  2. 对于每个CLI工作区,我将后端指向相应的TFC工作区,并执行terraform。这样,Terraform状态就会自动从S3后端迁移到TFC。
  3. 最后,在迁移了所有CLI工作区之后,我使用了workspace块的前缀参数,而不是name参数来管理不同的TFC工作区。
票数 0
EN

Stack Overflow用户

发布于 2021-04-02 10:17:27

我也遇到了类似的问题,帮助我提前创建带有预期名称的空工作区,然后运行terraform init。在执行init之前,我还将.tfstate文件从远程位置复制到项目的根目录。希望这也能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66759441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档