Тип бэкенда: azurerm
Состояние хранится в виде Blob с указанным ключом в контейнере Blob в учётной записи Blob Storage.
Этот бэкенд поддерживает блокировку состояния и проверку согласованности с помощью встроенных возможностей Azure Blob Storage.
Пример конфигурации
При аутентификации с помощью Azure CLI или Service Principal (с сертификатом клиента или секретом клиента):
terraform {
backend "azurerm" {
resource_group_name = "StorageAccount-ResourceGroup"
storage_account_name = "abcd1234"
container_name = "tfstate"
key = "prod.terraform.tfstate"
}
}При аутентификации с помощью Managed Service Identity (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 Authentication:
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"
}
}При использовании AzureAD для аутентификации в 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..."
}
}При использовании Service Principal или ключа доступа рекомендуется использовать для учётных данных частичную конфигурацию.
Конфигурация источника данных
При аутентификации с помощью Service Principal (с сертификатом клиента или секретом клиента):
data "terraform_remote_state" "foo" {
backend = "azurerm"
config = {
storage_account_name = "tofu123abc"
container_name = "tofu-state"
key = "prod.terraform.tfstate"
}
}При аутентификации с помощью Managed Service Identity (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"
}
}При аутентификации с помощью AzureAD Authentication:
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"
}
}При использовании AzureAD для аутентификации в 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.
При аутентификации с помощью Managed Service Identity (MSI) также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учётная запись Storage. -
msi_endpoint— (Необязательный) Путь к пользовательской конечной точке Managed Service Identity; если значение не указано, оно определяется автоматически. Значение также можно задать с помощью переменной средыARM_MSI_ENDPOINT. -
subscription_id— (Необязательный) Идентификатор подписки, в которой находится учётная запись Storage. Значение также можно задать с помощью переменной средыARM_SUBSCRIPTION_ID. -
tenant_id— (Необязательный) Идентификатор арендатора, в котором находится подписка. Значение также можно задать с помощью переменной средыARM_TENANT_ID. -
use_msi— (Необязательный) Следует ли использовать аутентификацию Managed Service Identity? Значение также можно задать с помощью переменной средыARM_USE_MSI.
При аутентификации с помощью Service Principal через 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.
При аутентификации с помощью AzureAD Authentication также поддерживаются следующие поля:
-
use_azuread_auth— (Необязательный) Следует ли использовать AzureAD Authentication для доступа к учётной записи Blob Storage. Значение также можно задать с помощью переменной средыARM_USE_AZUREAD.ПримечаниеПри использовании AzureAD для аутентификации в Storage необходимо также убедиться, что назначена роль
Storage Blob Data Owner.
При аутентификации с помощью Service Principal и сертификата клиента также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учётная запись Storage. -
client_id— (Необязательный) Идентификатор клиента Service Principal. Значение также можно задать с помощью переменной средыARM_CLIENT_ID. -
client_certificate_password— (Необязательный) Пароль сертификата клиента, указанного вclient_certificate_path. Значение также можно задать с помощью переменной средыARM_CLIENT_CERTIFICATE_PASSWORD. -
client_certificate_path— (Необязательный) Путь к файлу PFX, используемому в качестве сертификата клиента при аутентификации от имени Service Principal. Значение также можно задать с помощью переменной средыARM_CLIENT_CERTIFICATE_PATH. -
subscription_id— (Необязательный) Идентификатор подписки, в которой находится учётная запись Storage. Значение также можно задать с помощью переменной средыARM_SUBSCRIPTION_ID. -
tenant_id— (Необязательный) Идентификатор арендатора, в котором находится подписка. Значение также можно задать с помощью переменной средыARM_TENANT_ID.
При аутентификации с помощью Service Principal и секрета клиента также поддерживаются следующие поля:
-
resource_group_name— (Обязательный) Имя группы ресурсов, в которой находится учётная запись Storage. -
client_id— (Необязательный) Идентификатор клиента Service Principal. Значение также можно задать с помощью переменной средыARM_CLIENT_ID. -
client_secret— (Необязательный) Секрет клиента Service Principal. Значение также можно задать с помощью переменной среды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.10/language/settings/backends/azurerm/