Подробно узнать о том как настроить хранение Terraform state в Yandex Object Storage можно в документации.
Для хранения Terraform state в Yandex Object Storage необходимо:
- Создать Bucket в Yandex Object Storage.
- Создать Service Account (SA) с ролью storage.uploader.
- Создать статический ключ доступа для SA.
- Сохранить созданный статический ключ доступа как Lockbox Secret.
-
Запустить процесс создания S3-bucket и необходимых доступов для хранения Terraform state в Yandex Object Storage:
cd s3-init ./s3-init.sh b1g22jx2133dpa3yvxc3 my-tf-state-storage
-
Получить результаты работы
init.sh
вида:=== 1. Add lines below to your env-setup.sh === SEC_LIST=($(yc lockbox payload get --name=my-tf-state-storage --format=json | jq -r '.entries[0] | .key, .text_value')) export AWS_ACCESS_KEY_ID=${SEC_LIST[0]} export AWS_SECRET_ACCESS_KEY=${SEC_LIST[1]} ==== === 2. Initialize Terraform S3 backend as following: === terraform init -backend-config="bucket=my-tf-state-storage" -backend-config="key=zitadel-deploy.tfstate" ===
-
Добавить строки из вывода
init.sh
выше в скрипт настройки окруженияenv-setup.sh
нужного модуля для получения значений секретов S3 в переменные окружения. -
Удалить символы комментариев
/*, */
в файлахproviders.tf
в блоке кода, обозначенного какS3 remote TF state config
. -
Инициализировать Terraform Backend, используя вывод
init.sh
выше, указав в параметреkey
желаемое имя файла где будет храниться Terraform state :terraform init -backend-config="bucket=my-tf-state-storage" -backend-config="key=zitadel-deploy.tfstate"