Skip to content

Latest commit

 

History

History
41 lines (31 loc) · 3.04 KB

File metadata and controls

41 lines (31 loc) · 3.04 KB

Хранение Terraform state в Yandex Object Storage

Создание S3-bucket в Yandex Object Storage и организация доступа к нему

Подробно узнать о том как настроить хранение Terraform state в Yandex Object Storage можно в документации.

Для хранения Terraform state в Yandex Object Storage необходимо:

  1. Создать Bucket в Yandex Object Storage.
  2. Создать Service Account (SA) с ролью storage.uploader.
  3. Создать статический ключ доступа для SA.
  4. Сохранить созданный статический ключ доступа как Lockbox Secret.

Настройка Terraform для работы c Yandex Object Storage

  1. Запустить процесс создания S3-bucket и необходимых доступов для хранения Terraform state в Yandex Object Storage:

    cd s3-init
    ./s3-init.sh b1g22jx2133dpa3yvxc3 my-tf-state-storage
  2. Получить результаты работы 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"
    ===
  3. Добавить строки из вывода init.sh выше в скрипт настройки окружения env-setup.sh нужного модуля для получения значений секретов S3 в переменные окружения.

  4. Удалить символы комментариев /*, */ в файлах providers.tf в блоке кода, обозначенного как S3 remote TF state config.

  5. Инициализировать Terraform Backend, используя вывод init.sh выше, указав в параметре key желаемое имя файла где будет храниться Terraform state :

     terraform init -backend-config="bucket=my-tf-state-storage" -backend-config="key=zitadel-deploy.tfstate"