Как использовать состояние терраформирования в другой лазурной подписке

Я развертываю лазурную инфраструктуру с Terraform. Состояние терраформирования будет храниться в подписке, которая будет отличаться от основной подписки развертывания. Я использую псевдоним в объявлении поставщика. Мой код terraform выглядит следующим образом:

      terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 2.38.0"
    }
  }
  backend "azurerm" {
    resource_group_name  = "resourcegroup_name"  
    storage_account_name = "storageaccount_name" 
    container_name       = "mystate"
    key                  = "tfstatename1.tfstate"
  }
}

provider "azurerm" {
  features {}
}

provider "azurerm" {
  features {}
  alias = "second_subscription"  
  subscription_id = var.second_subscription_id
}

Состояние моего терраформирования должно храниться в подписке с псевдонимом.

Как я могу этого добиться?

1 ответ

Я не думаю, что конфигурация серверной части azurerm принимает данные из конфигурации поставщика azurerm. В какой-то степени можно сказать, что он применяет собственный механизм аутентификации. Тем не менее, у них есть некоторые общие функции: например, обе могут использовать контекст безопасности Azure CLI.

Чтобы явно указать идентификатор подписки для вашей серверной конфигурации, вы должны добавить его в блок конфигурации серверной части. Вот так:

      backend "azurerm" {
    resource_group_name  = "resourcegroup_name"  
    storage_account_name = "storageaccount_name" 
    container_name       = "mystate"
    key                  = "tfstatename1.tfstate"
    subscription_id      = "091f1800-0de3-4fef-831a-003a74ce245f"
}

Ссылка: https://developer.hashicorp.com/terraform/language/settings/backends/azurerm

Другие вопросы по тегам