0

我在或阉割我的 Azure 环境中使用 Terraform。目前我可以执行增量更新。当我运行一个新计划时,它试图破坏所有以前的;y 应用的资源。例如,我创建了一个新的虚拟机,接下来我运行一个新的计划来创建一个角色,它将虚拟机标记为销毁。

我知道 Azure ARM 的部署模式为incrementalor complete

是否可以deployment_mode从 terraform 访问该属性?

例如,在这个脚本中:

data "azurerm_subscription" "primary" {
}

resource "azurerm_role_definition" "roles" {
  count              = length(var.roles)
  name               = "${var.role_prefix}${var.roles[count.index]["suffix_name"]}${var.role_suffix}"
  scope              = "${data.azurerm_subscription.primary.id}"

  permissions {
    actions = split(",", var.roles[count.index]["actions"])

    not_actions = split(",", var.roles[count.index]["not_actions"])
  }

  assignable_scopes = ["${data.azurerm_subscription.primary.id}"]
}

有没有办法设置deployment_mode

4

1 回答 1

2

您误解了 terraform 的工作原理。如果它不能编辑资源,它只会破坏资源。如果编辑可以工作(至少 terraform 应该认为它会工作),那么 terraform 只会更新服务,但是在您创建资源之后,许多事情是不可变的(名称是一个相当不错的例子)。简而言之:如果您尝试更改不可变属性(或更准确地说 - terraform 认为不可变的属性),terraform 将销毁\创建资源,否则它将更新它。

此外,您误解了完整\增量部署模式;)

于 2020-01-26T14:16:04.100 回答