Spec-Zone.ru › OpenTofu 1.9

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

Spec-Zone.ru

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