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