Тип бэкенда: COS
Хранит состояние в виде объекта с настраиваемым префиксом в указанном бакете Tencent Cloud Object Storage (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.11/language/settings/backends/cos/