Тип бэкенда: 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.12/language/settings/backends/oss/