我们使用Azure blob存储作为我们的Terraform远程状态,并且我试图将有关特定现有资源的状态信息移动到该存储帐户中的不同容器中。新的容器(terraforminfra-v2)已经存在,现有的Terraform代码指向旧的容器(terraformminfra)。我尝试了以下步骤:
- 使用"地形状态拉"migrate.tfstate"在terraformera中创建状态数据的本地副本。当我看这个文件时,它似乎有所有适当的状态信息。
- 更新Terraform代码,现在引用容器terraformera -v2。
- 使用"terraform init"它识别后端配置已更改,并要求迁移所有工作区。我输入'no',因为我只想改变特定的资源,而不是所有工作区的所有内容。
- 使用命令"terraform state push migrate.tfstate"
最后一个命令看起来有点像它在做什么,但是当它完成时(没有提示错误),在新的容器中仍然没有状态信息。
是不是因为我在步骤#3中回答了"否",这是否意味着它实际上没有改变到它"指向"的远程状态?与此相关的是,"地形状态"有什么办法吗?命令告诉你的状态在哪里?
我这里漏了一个步骤吗?提前谢谢。
好的,我想我知道如何做到这一点(或者至少,这些步骤似乎是有效的):
- 将当前文件夹的。tf文件重命名为其他文件(如文件夹.old)
- 使用"地形状态拉&;获取当前工作空间状态的本地副本(需要对要迁移的每个工作空间重复这些步骤)
- 用原来的名字创建一个新文件夹,并将你的代码复制到其中。
- 创建一个与原来同名的新工作区。
- 修改远程后端代码,使其指向新容器(或者你要更改的关于远程状态的名称/位置的任何其他内容)。
- run "terraform init"所以它指向新的远程后端。
- 使用"地形状态推送本地状态文件"将导出的状态推送到新的后端。
我然后使用了"terraform state list"one_answers"地形规划";在新文件夹中检查是否一切正常