Тип бэкенда: azurerm
Сохраняет состояние в виде Blob с указанным ключом в контейнере Blob в учетной записи Blob Storage.
Этот бэкенд поддерживает блокировку состояния и проверку согласованности с помощью встроенных возможностей Azure Blob Storage.
Пример конфигурации
При аутентификации с помощью Azure CLI или субъекта-службы (с сертификатом клиента или секретом клиента):
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
}
}При аутентификации с помощью управляемого удостоверения службы (MSI):
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_msi = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При аутентификации с помощью OpenID Connect (OIDC):
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_oidc = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При аутентификации с помощью Azure AD:
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
use_azuread_auth = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При использовании Azure AD для аутентификации в Storage также необходимо убедиться, что назначена роль Storage Blob Data Owner.
При аутентификации с помощью ключа доступа, связанного с учетной записью Storage:
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
# rather than defining this inline, the Access Key can also be sourced
# from an Environment Variable - more information is available below.
access_key = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}При аутентификации с помощью токена SAS, связанного с учетной записью Storage:
terraform {
backend "azurerm" {
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
# rather than defining this inline, the SAS Token can also be sourced
# from an Environment Variable - more information is available below.
sas_token = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}При использовании субъекта-службы или ключа доступа мы рекомендуем использовать частичную конфигурацию для учетных данных.
Конфигурация источника данных
При аутентификации с помощью субъекта-службы (с сертификатом клиента или секретом клиента):
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
}
}При аутентификации с помощью управляемого удостоверения службы (MSI):
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_msi = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При аутентификации с помощью OpenID Connect (OIDC):
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_oidc = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При аутентификации с помощью Azure AD:
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
use_azuread_auth = true
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
}
}При использовании Azure AD для аутентификации в Storage также необходимо убедиться, что назначена роль Storage Blob Data Owner.
При аутентификации с помощью ключа доступа, связанного с учетной записью Storage:
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
# rather than defining this inline, the Access Key can also be sourced
# from an Environment Variable - more information is available below.
access_key = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}При аутентификации с помощью токена SAS, связанного с учетной записью Storage:
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
# rather than defining this inline, the SAS Token can also be sourced
# from an Environment Variable - more information is available below.
sas_token = "abcdefghijklmnopqrstuvwxyz0123456789..."
}
}Переменные конфигурации
Рекомендуем использовать переменные среды для передачи учетных данных и других конфиденциальных данных. Если вы используете -backend-config или указываете эти значения непосредственно в конфигурации, OpenTofu включит их как в подкаталог .terraform, так и в файлы плана. Подробности см. в разделе Учетные данные и конфиденциальные данные.
Поддерживаются следующие параметры конфигурации:
-
storage_account_name— (Обязательный) Имя учетной записи Storage. -
container_name— (Обязательный) Имя контейнера Storage в учетной записи Storage. -
key— (Обязательный) Имя Blob, используемого для получения и сохранения файла состояния OpenTofu в контейнере Storage. -
environment— (Необязательный) Среда Azure, которую следует использовать. Также можно задать с помощью переменной средыARM_ENVIRONMENT. Возможные значения:public,china,german,stackиusgovernment. По умолчанию используетсяpublic. -
endpoint— (Необязательный) Пользовательская конечная точка Azure Resource Manager. Также можно задать с помощью переменной средыARM_ENDPOINT.ПримечаниеПараметр
endpointследует настраивать только при использовании Azure Stack. -
timeout_seconds— (Необязательный) Количество секунд до истечения времени ожидания при попытке инициализировать клиент, получить Blob или метаданные из Azure. Также можно задать с помощью переменной средыARM_TIMEOUT_SECONDS. По умолчанию используется300(5 минут). Чтобы отключить тайм-аут, задайте значение0.ПримечаниеЗначение
timeout_seconds, равное0или большое, отключает или увеличивает только тайм-ауты OpenTofu. Запросы по-прежнему будут завершаться по тайм-ауту в соответствии с сетевой конфигурацией вашей системы. -
metadata_host— (Необязательный) Имя узла службы метаданных Azure (например,management.azure.com), используемое для определения облачной среды при использовании пользовательской среды Azure. Также можно задать с помощью переменной средыARM_METADATA_HOSTNAME. -
snapshot— (Необязательный) Следует ли создавать моментальный снимок Blob, используемого для хранения файла состояния OpenTofu, перед его использованием? По умолчанию используетсяfalse. Это значение также можно задать с помощью переменной средыARM_SNAPSHOT.
При аутентификации с помощью управляемого удостоверения службы (MSI) также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учетная запись Storage. -
msi_endpoint— (Необязательный) Путь к пользовательской конечной точке управляемого удостоверения службы. Если он не указан, определяется автоматически. Также можно задать с помощью переменной средыARM_MSI_ENDPOINT. -
subscription_id— (Необязательный) Идентификатор подписки, в которой находится учетная запись Storage. Также можно задать с помощью переменной средыARM_SUBSCRIPTION_ID. -
tenant_id— (Необязательный) Идентификатор арендатора, в котором находится подписка. Также можно задать с помощью переменной средыARM_TENANT_ID. -
use_msi— (Необязательный) Следует ли использовать аутентификацию с помощью управляемого удостоверения службы? Также можно задать с помощью переменной средыARM_USE_MSI.
При аутентификации с помощью субъекта-службы через OpenID Connect (OIDC) также поддерживаются следующие поля:
-
oidc_request_url— (Необязательный) URL-адрес поставщика OIDC, у которого запрашивается токен ID. Также можно задать с помощью переменных средыARM_OIDC_REQUEST_URLилиACTIONS_ID_TOKEN_REQUEST_URL. -
oidc_request_token— (Необязательный) Токен bearer для запроса к поставщику OIDC. Также можно задать с помощью переменных средыARM_OIDC_REQUEST_TOKENилиACTIONS_ID_TOKEN_REQUEST_TOKEN. -
oidc_token— (Необязательный) Токен ID при аутентификации с помощью OpenID Connect (OIDC). Также можно задать с помощью переменной средыARM_OIDC_TOKEN. -
oidc_token_file_path— (Необязательный) Путь к файлу, содержащему токен ID при аутентификации с помощью OpenID Connect (OIDC). Также можно задать с помощью переменной средыARM_OIDC_TOKEN_FILE_PATH. -
use_oidc— (Необязательный) Следует ли использовать аутентификацию OIDC? Также можно задать с помощью переменной средыARM_USE_OIDC.
При аутентификации с помощью токена SAS, связанного с учетной записью Storage, также поддерживаются следующие поля:
-
sas_token— (Необязательный) Токен SAS, используемый для доступа к учетной записи Blob Storage. Также можно задать с помощью переменной средыARM_SAS_TOKEN.
При аутентификации с помощью ключа доступа учетной записи Storage также поддерживаются следующие поля:
-
access_key— (Необязательный) Ключ доступа, используемый для доступа к учетной записи Blob Storage. Также можно задать с помощью переменной средыARM_ACCESS_KEY.
При аутентификации с помощью Azure AD также поддерживаются следующие поля:
-
use_azuread_auth— (Необязательный) Следует ли использовать Azure AD для доступа к учетной записи Blob Storage. Также можно задать с помощью переменной средыARM_USE_AZUREAD.ПримечаниеПри использовании Azure AD для аутентификации в Storage также необходимо убедиться, что назначена роль
Storage Blob Data Owner.
При аутентификации с помощью субъекта-службы и сертификата клиента также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учетная запись Storage. -
client_id— (Необязательный) Идентификатор клиента субъекта-службы. Также можно задать с помощью переменной средыARM_CLIENT_ID. -
client_certificate_password— (Необязательный) Пароль сертификата клиента, указанного вclient_certificate_path. Также можно задать с помощью переменной средыARM_CLIENT_CERTIFICATE_PASSWORD. -
client_certificate_path— (Необязательный) Путь к файлу PFX, используемому в качестве сертификата клиента при аутентификации от имени субъекта-службы. Также можно задать с помощью переменной средыARM_CLIENT_CERTIFICATE_PATH. -
subscription_id— (Необязательный) Идентификатор подписки, в которой находится учетная запись Storage. Также можно задать с помощью переменной средыARM_SUBSCRIPTION_ID. -
tenant_id— (Необязательный) Идентификатор арендатора, в котором находится подписка. Также можно задать с помощью переменной средыARM_TENANT_ID.
При аутентификации с помощью субъекта-службы и секрета клиента также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учетная запись Storage. -
client_id— (Необязательный) Идентификатор клиента субъекта-службы. Также можно задать с помощью переменной средыARM_CLIENT_ID. -
client_secret— (Необязательный) Секрет клиента субъекта-службы. Также можно задать с помощью переменной средыARM_CLIENT_SECRET. -
subscription_id— (Необязательный) Идентификатор подписки, в которой находится учетная запись Storage. Также можно задать с помощью переменной средыARM_SUBSCRIPTION_ID. -
tenant_id— (Необязательный) Идентификатор арендатора, в котором находится подписка. Также можно задать с помощью переменной средыARM_TENANT_ID.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/settings/backends/azurerm/