Spec-Zone.ru › OpenTofu 1.10

Тип бэкенда: 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API