【问题标题】:terraform : creating a new instance or upgrade the existing one?terraform:创建一个新实例还是升级现有实例?
【发布时间】:2021-11-25 08:17:42
【问题描述】:

我正在尝试升级谷歌云作曲家。 terraform 如何识别我要升级现有实例或创建新实例?在 tf 文件中哪里指定?

terraform {
  backend "gcs" {
    bucket  = "tf-state-prod"
    prefix  = "terraform/state"
  }
}

如果我将前缀更改为不同的文件路径前缀 = "terraform/new_state" ,它会创建一个新实例吗?

【问题讨论】:

    标签: terraform terraform-provider-gcp


    【解决方案1】:

    TF 将其管理的基础架构的当前状态存储在state file 中。您将对 TF 代码所做的任何更改都将与存储在状态文件中的内容进行比较。基于此,TF 可以决定哪些资源发生了变化,哪些是添加的,哪些是删除的。

    【讨论】:

    • 如果我想创建一个新的谷歌云作曲家 2.0 实例并保留旧的作曲家 1.0.如果我更改 tf 文件中的 composer 版本,此更改会创建一个新实例还是升级现有实例?
    • @Dataflower 我不确定你的意思。请用您的 TF 代码和您想要更改的内容更新问题。
    • 如果我将前缀更改为不同的文件路径前缀 = "terraform/new_state" ,它会创建一个新实例?
    【解决方案2】:

    您在此处包含的代码示例用于后端配置,它是 Terraform 配置的根模块的特殊部分,因为它不是为 Terraform 声明一些要创建的基础设施,而是告诉 Terraform 在哪里存储有关托管基础设施。

    如果您更改了backend "gcs" 块的任何部分,那么您需要使用terraform init 重新初始化您的工作目录。当您这样做时,Terraform 会注意到您更改了设置,并且默认情况下会提示您决定是否要将现有状态快照迁移到新位置。

    如果您打算从同一配置中获得多个“最新”状态快照,那么您可能希望使用 Workspaces 来实现这一目标,但请务必考虑 When to use Multiple Workspaces 中的建议,看看是否建议这样做适合您的基本目标的解决方案。该部分包括一些更适合其他情况的替代方法。

    【讨论】:

    • 非常感谢。
    猜你喜欢
    • 2011-01-31
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2013-12-28
    • 2021-06-17
    • 2015-06-15
    相关资源
    最近更新 更多