【问题标题】:how to manage terraform state file in azure for preventing deletion and replacement如何在 azure 中管理 terraform 状态文件以防止删除和替换
【发布时间】:2020-02-17 23:09:16
【问题描述】:

如何在 azure 中管理 terraform 状态文件以防止删除和替换, 就像手臂模板一样。 我正在使用 terraform 和 terraform plan 部署 VM,并且应用正在替换 我的虚拟机每次。

【问题讨论】:

    标签: azure terraform


    【解决方案1】:

    您可以从此tutorial 将 Terraform 状态存储在 Azure 存储中,在任何写入状态的操作之前,Azure 存储 blob 都会自动锁定。

    如果是这样,您将配置状态后端。 Terraform 状态后端在您运行terraform init 命令时进行配置。配置状态后端需要以下数据:

    • storage_account_name:Azure 存储帐户的名称。
    • container_name:blob 容器的名称。
    • key:要创建的状态存储文件的名称。
    • access_key:存储访问密钥。

    这是一个例子。

    terraform {
      backend "azurerm" {
        resource_group_name   = "tstate"
        storage_account_name  = "tstate09762"
        container_name        = "tstate"
        key                   = "terraform.tfstate"
      }
    }
    
    resource "azurerm_resource_group" "state-demo-secure" {
      name     = "state-demo"
      location = "eastus"
    }
    

    【讨论】:

    • 实际上我已经完成了这个配置,但是在运行 terraform 时,它会替换我不想要的资源,例如,如果我在一个部署中部署 vm1 而在另一个部署中部署 vm2,它会替换 vm1
    • Terraform 基于状态码运行。如果您想在不替换状态文件中现有资源的情况下开始另一个部署,您可以在我的回复中更改key 并在您的 blob 存储中重新创建一个新的状态文件。这是你所期望的吗?
    猜你喜欢
    • 2017-12-17
    • 2021-12-28
    • 2020-05-10
    • 1970-01-01
    • 2018-05-06
    • 2020-08-01
    • 2018-10-07
    • 2022-06-24
    • 1970-01-01
    相关资源
    最近更新 更多