Тип бэкенда: COS
Хранит состояние в виде объекта с настраиваемым префиксом в указанном бакете в объектном хранилище Tencent Cloud (COS).
Этот бэкенд поддерживает блокировку состояния. Для хранения состояния в бакете COS требуются следующие разрешения:
-
CreateTag,DeleteTagиDescribeTagsдля ключа тегаtencentcloud-terraform-lock -
Put,GetиDeleteдля файлов с указанным префиксом бакета
Настоятельно рекомендуем включить версионирование объектов в бакете COS, чтобы иметь возможность восстановить состояние в случае случайного удаления или ошибки пользователя.
Пример конфигурации
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}Предполагается, что мы создали бакет COS с именем bucket-for-tofu-state-1258798060. Состояние OpenTofu будет записано в файл tofu/state/terraform.tfstate.
Настройка источника данных
Чтобы использовать удаленное состояние COS в другой конфигурации, воспользуйтесь источником данных terraform_remote_state.
data "terraform_remote_state" "foo" {
backend = "cos"
config = {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}Переменные конфигурации
Рекомендуем использовать переменные среды для передачи учетных данных и других конфиденциальных данных. Если вы используете -backend-config или задаете эти значения непосредственно в конфигурации, OpenTofu включит их как в подкаталог .terraform, так и в файлы плана. Подробнее см. в разделе Учетные данные и конфиденциальные данные.
Поддерживаются следующие параметры конфигурации и переменные среды:
-
secret_id— (Необязательно) Идентификатор секрета Tencent Cloud. Поддерживаются переменные средыTENCENTCLOUD_SECRET_ID. -
secret_key— (Необязательно) Ключ секрета Tencent Cloud. Поддерживаются переменные средыTENCENTCLOUD_SECRET_KEY. -
security_token— (Необязательно) Токен безопасности TencentCloud для временных учетных данных доступа. Поддерживаются переменные средыTENCENTCLOUD_SECURITY_TOKEN. -
region— (Необязательно) Регион бакета COS. Поддерживаются переменные средыTENCENTCLOUD_REGION. -
bucket— (Обязательно) Имя бакета COS. Сначала необходимо создать его вручную. -
prefix— (Необязательно) Каталог для сохранения файла состояния в бакете. По умолчанию — "env:". -
key— (Необязательно) Путь для сохранения файла состояния в бакете. По умолчанию —terraform.tfstate. -
encrypt— (Необязательно) Включить ли шифрование файла состояния на стороне сервера. Если задано значение true, COS будет шифровать файл состояния с помощью алгоритма 'AES256'. -
acl— (Необязательно) ACL объекта, применяемый к файлу состояния; допускаются значенияprivateиpublic-read. По умолчанию —private. -
accelerate— (Необязательно) Включить ли глобальное ускорение. По умолчанию —false.
Принятие роли
Если указана роль для принятия, OpenTofu попытается принять ее, используя предоставленные учетные данные. Роль для принятия можно указать, добавив блок assume_role в блок бэкенда cos.
-
assume_role— (Необязательно) Блокassume_role. Если он указан, OpenTofu попытается принять эту роль, используя предоставленные учетные данные.
Блок assume_role имеет следующие параметры:
-
role_arn— (Обязательно) ARN роли, которую нужно принять. Значение можно получить изTENCENTCLOUD_ASSUME_ROLE_ARN. -
session_name— (Обязательно) Имя сеанса, используемое при вызове AssumeRole. Значение можно получить изTENCENTCLOUD_ASSUME_ROLE_SESSION_NAME. -
session_duration— (Обязательно) Продолжительность сеанса при вызове AssumeRole. Значение должно находиться в диапазоне от 0 до 43200 секунд; значение по умолчанию — 7200 секунд. Его можно получить изTENCENTCLOUD_ASSUME_ROLE_SESSION_DURATION. -
policy— (Необязательно) Более ограничительная политика для вызова AssumeRole. Она не должна содержать элементыprincipal. Примечание. Дополнительные сведения о синтаксисе см. в разделе логика синтаксиса политик.
Пример использования:
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-{appid}"
prefix = "tofu/state"
assume_role {
role_arn = "qcs::cam::uin/xxx:roleName/yyy"
session_name = "my-session-name"
session_duration = 3600
}
}
}Кроме того, эти настройки assume_role можно задать с помощью переменных среды.
Пример использования:
$ export TENCENTCLOUD_SECRET_ID="my-secret-id" $ export TENCENTCLOUD_SECRET_KEY="my-secret-key" $ export TENCENTCLOUD_REGION="ap-guangzhou" $ export TENCENTCLOUD_ASSUME_ROLE_ARN="qcs::cam::uin/xxx:roleName/yyy" $ export TENCENTCLOUD_ASSUME_ROLE_SESSION_NAME="my-session-name" $ export TENCENTCLOUD_ASSUME_ROLE_SESSION_DURATION=3600 $ tofu plan
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/cos/