【问题标题】:Terraform append existing local state file to existing remote backend state file (Azure blob Storage)Terraform 将现有的本地状态文件附加到现有的远程后端状态文件(Azure Blob 存储)
【发布时间】:2021-03-02 17:40:15
【问题描述】:

我有一个 terraform 状态文件 (terraform.tfstate),下面用红色箭头突出显示,它存储在本地磁盘中。

我还有一个远程后端状态文件(存储在 Azure Blob 存储中),其中包含我已部署的资源。

我想将现有的本地状态文件附加到 Azure 中现有的远程后端。

我将本地状态移动到一个目录,我确实执行了terraform state push terraform.tfstate

我收到以下错误: terraform cannot import state with lineage over unrelated stage with lineage

然后我做了terraform state push -force terraform.tfstate

但是,它完全用本地状态替换了我现有的状态(远程)。 (我确实备份了我的远程状态)。

我想用远程状态文件附加我的本地状态文件。怎么能做到这一点? 我想要的只是-一个远程的单一状态文件,已经提供了资源,请提供任何其他建议。帮助。

【问题讨论】:

  • 每个状态有多少资源,你就不能import新状态文件里的资源吗?是否都部署了相同的 terraform 版本?您的main.tf 是否生成与本地状态文件中的状态匹配的资源?否则合并状态根本没有意义,因为下一次部署无论如何都会破坏资源。
  • @luk2302 本地状态文件中有许多资源。两者都部署在相同的 terraform 版本中。 adauthservice 下的 Main.tf 确实与本地状态文件完全匹配

标签: terraform state push azure-blob-storage terraform-provider-azure


【解决方案1】:

事件的时间表尚不清楚您是如何进入这种状态的。根据您的描述,这表明您可能已迁移到 blob,但后来又回来并再次开始使用本地状态。不管 terraform 不知道。这认为有两种不同的状态。

鉴于您拥有的资源数量,这可能会很困难。选择您拥有的具有更多资源的状态文件作为基础。你有几个选择

  1. (推荐)将较小状态文件中的所有剩余资源导入到较大状态文件中。
  2. 尝试使用mv command
  3. 通过复制它来编辑 json 状态文件(这是不可预测的 - 但如果你很绝望)

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 2020-06-14
    • 2018-12-14
    • 2021-12-11
    • 2017-01-05
    • 2021-11-20
    • 2021-08-22
    • 2016-11-24
    • 2019-12-19
    相关资源
    最近更新 更多