Spec-Zone.ru › OpenTofu 1.11

Тип бэкенда: oss

Хранит состояние под заданным ключом в заданном бакете в сервисе Alibaba Cloud OSS. Этот бэкенд также поддерживает блокировку состояния и проверку согласованности через Alibaba Cloud Table Store; эту возможность можно включить, указав в поле tablestore_table имя существующей таблицы TableStore.

Этот бэкенд поддерживает блокировку состояния через TableStore.

Пример конфигурации​

Блок кода
terraform {
  backend "oss" {
    bucket = "bucket-for-tofu-state"
    prefix   = "path/mystate"
    key   = "version-1.tfstate"
    region = "cn-beijing"
    tablestore_endpoint = "https://tofu-remote.cn-hangzhou.ots.aliyuncs.com"
    tablestore_table = "statelock"
  }
}

Предполагается, что создан бакет OSS с именем bucket-for-tofu-state, экземпляр OTS с именем tofu-remote и таблица OTS TableStore с именем statelock. Состояние OpenTofu будет записано в файл path/mystate/version-1.tfstate. В TableStore должен быть первичный ключ с именем LockID типа String.

Настройка источника данных​

Чтобы использовать удаленное состояние OSS в другой конфигурации, воспользуйтесь источником данных terraform_remote_state.

Блок кода
terraform {
  backend "oss" {
    bucket = "remote-state-dns"
    prefix = "mystate/state"
    key    = "terraform.tfstate"
    region = "cn-beijing"
  }
}

Источник данных terraform_remote_state возвращает все корневые выходные данные, определенные в указанном удаленном состоянии. Пример выходных данных:

Блок кода
data "terraform_remote_state" "network" {
    backend   = "oss"
    config    = {
        bucket = "remote-state-dns"
        key    = "terraform.tfstate"
        prefix = "mystate/state"
        region = "cn-beijing"
    }
    outputs   = {}
    workspace = "default"
}

Переменные конфигурации​

Предупреждение

Рекомендуем использовать переменные среды для передачи учетных данных и других конфиденциальных данных. Если вы используете -backend-config или жестко задаете эти значения непосредственно в конфигурации, OpenTofu включит их и в подкаталог .terraform, и в файлы плана. Подробности см. в разделе Учетные данные и конфиденциальные данные.

Поддерживаются следующие параметры конфигурации или переменные среды:

  • access_key — (необязательно) ключ доступа Alibaba Cloud. Поддерживаются переменные среды ALICLOUD_ACCESS_KEY и ALICLOUD_ACCESS_KEY_ID.

  • secret_key — (необязательно) секретный ключ доступа Alibaba Cloud. Поддерживаются переменные среды ALICLOUD_SECRET_KEY и ALICLOUD_ACCESS_KEY_SECRET.

  • security_token — (необязательно) токен доступа STS. Поддерживается переменная среды ALICLOUD_SECURITY_TOKEN.

  • ecs_role_name — (необязательно, доступно начиная с версии 0.12.14) имя роли RAM, назначенной экземпляру ECS для выполнения операций с API. Его можно найти в разделе «Управление доступом» консоли Alibaba Cloud.

  • region — (необязательно) регион бакета OSS. Поддерживаются переменные среды ALICLOUD_REGION и ALICLOUD_DEFAULT_REGION.

  • endpoint — (необязательно) пользовательская конечная точка API OSS. Поддерживаются переменные среды ALICLOUD_OSS_ENDPOINT и OSS_ENDPOINT.

  • bucket — (обязательно) имя бакета OSS.

  • prefix — (необязательно) каталог, в котором будет храниться файл состояния. По умолчанию используется "env:".

  • key — (необязательно) имя файла состояния. По умолчанию используется terraform.tfstate.

  • tablestore_endpoint / ALICLOUD_TABLESTORE_ENDPOINT — (необязательно) пользовательская конечная точка API TableStore.

  • tablestore_table — (необязательно) таблица TableStore для блокировки состояния и проверки согласованности. В таблице должен быть первичный ключ с именем LockID типа String.

  • sts_endpoint — (необязательно, доступно начиная с версии 1.0.11) пользовательская конечная точка API AliCloud Security Token Service (STS). Поддерживается переменная среды ALICLOUD_STS_ENDPOINT.

  • encrypt — (необязательно) включение шифрования файла состояния на стороне сервера. Если значение равно true, OSS будет шифровать файл состояния с помощью алгоритма 'AES256'.

  • acl — (необязательно) ACL объекта, применяемый к файлу состояния.

  • shared_credentials_file — (необязательно, доступно начиная с версии 0.12.8) путь к файлу общих учетных данных. Также можно задать с помощью переменной среды ALICLOUD_SHARED_CREDENTIALS_FILE. Если этот параметр не задан, но указан профиль, будет использоваться ~/.aliyun/config.json.

  • profile — (необязательно, доступно начиная с версии 0.12.8) имя профиля Alibaba Cloud, указанное в файле общих учетных данных. Также можно задать с помощью переменной среды ALICLOUD_PROFILE.

  • assume_role_role_arn — (необязательно, доступно начиная с версии 1.1.0) ARN роли, которую нужно принять. Если ARN задан пустой строкой, переключение роли не выполняется. Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_ARN. OpenTofu выполняет конфигурацию учетной записи с предоставленными учетными данными.

  • assume_role_policy — (необязательно, доступно начиная с версии 1.1.0) более ограничительная политика, применяемая к временным учетным данным. Она позволяет дополнительно ограничить разрешения, предоставляемые результирующими временными учетными данными безопасности. С помощью этой политики нельзя предоставить разрешения, превышающие разрешения принимаемой роли.

  • assume_role_session_name — (необязательно, доступно начиная с версии 1.1.0) имя сеанса, используемое при принятии роли. Если параметр не указан, в вызов AssumeRole в качестве имени сеанса передается 'tofu'. Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_SESSION_NAME.

  • assume_role_session_expiration — (необязательно, доступно начиная с версии 1.1.0) время, по истечении которого завершится созданный сеанс принятия роли. Допустимый диапазон значений: [900-3600] секунд. По умолчанию — 3600 (в этом случае Alibaba Cloud использует собственное значение по умолчанию). Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION.

  • assume_role — (устарел начиная с версии 1.1.0, доступен начиная с версии 0.12.6) если указан ARN роли, будет предпринята попытка принять эту роль с использованием предоставленных учетных данных. Параметр игнорируется, если указан assume_role_role_arn.

    Устарел; вместо него используйте отдельные параметры assume_role_*

    • role_arn — (обязательно) ARN роли, которую нужно принять. Если ARN задан пустой строкой, переключение роли не выполняется. Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_ARN. OpenTofu выполняет конфигурацию учетной записи с предоставленными учетными данными.

    • policy — (необязательно) более ограничительная политика, применяемая к временным учетным данным. Она позволяет дополнительно ограничить разрешения, предоставляемые результирующими временными учетными данными безопасности. С помощью этой политики нельзя предоставить разрешения, превышающие разрешения принимаемой роли.

    • session_name — (необязательно) имя сеанса, используемое при принятии роли. Если параметр не указан, в вызов AssumeRole в качестве имени сеанса передается 'tofu'. Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_SESSION_NAME.

    • session_expiration — (необязательно) время, по истечении которого завершится созданный сеанс принятия роли. Допустимый диапазон значений: [900-3600] секунд. По умолчанию — 3600 (в этом случае Alibaba Cloud использует собственное значение по умолчанию). Поддерживается переменная среды ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION.

Примечание

Чтобы хранить состояние в пользовательской конечной точке OSS, можно указать переменную среды OSS_ENDPOINT, например "oss-cn-beijing-internal.aliyuncs.com"

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/language/settings/backends/oss/

Spec-Zone.ru

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