государственное управление в терраформе - PullRequest
0 голосов
/ 24 января 2020

Я создаю сценарии terraform для развертывания orcastrate Azure. Я использовал Azure хранилище BLOB-объектов для хранения файла tfstate. Этот файл используется несколькими конвейерами IA C.

Если, например, я создаю группу ресурсов Azure с помощью terraform, когда я это сделаю, я пытаюсь создать новую пользовательскую роль, план terraform помечает группу ресурсов для уничтожения.

Это скрипт для создания роли:

terraform {
  backend "azurerm" {
    storage_account_name = "saiac"
    container_name       = "tfstate"
    key                  = "dev.terraform.tfstate"
    resource_group_name  = "rg-devops"
  }
}

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}"]
}

, а это скрипт для создания группы ресурсов:

terraform {
  backend "azurerm" {
    storage_account_name = "saiac"
    container_name       = "tfstate"
    key                  = "dev.terraform.tfstate"
    resource_group_name  = "rg-devops"
  }
}

resource "azurerm_resource_group" "rg" {
  count         = "${length(var.rg_purposes)}"
  name          = "${var.rg_prefix}-${var.rg_postfix}-${var.rg_purposes[count.index]}"
  location      = "${var.rg_location}"
  tags          = "${var.rg_tags}" 
}

Если я удаляю бэкэнд-блок, все работает как положено, делает это значит мне нужен бэкэнд блок?

1 Ответ

0 голосов
/ 25 января 2020

Бэкэнд терраформ не требуется для терраформ. Однако, если вы не используете его, никто другой не сможет извлечь ваш код и запустить вашу terraform. Состояние будет храниться ТОЛЬКО в вашей директории .terraform . Это означает, что если вы потеряете свои локальные файлы, попадающие в беду. Рекомендуется использовать бэкэнд, который также поддерживает состояние блокировка , что делает Azurerm. С задним бэкэндом состояние будет вытягиваться на terraform init после вытягивания репо.

...