Перейти к основному содержимому
Настроить хранение Terraform State
Последнее изменение:

Настроить хранение Terraform State

Terraform State (состояние Terraform) — это файл с расширением .tfstate, в котором хранится актуальная информация о состоянии инфраструктуры и используемых конфигурациях. Terraform State создается после первого применения команды terraform apply и обновляется при каждом внесении изменений в конфигурационные файлы. Terraform сравнивает реальную инфраструктуру с ее описанием в файле Terraform State. Если Terraform обнаруживает несоответствия, то изменяет реальную инфраструктуру так, чтобы она снова соответствовала описанию в Terraform State. Подробнее о Terraform State в статье Terraform State in HCP Terraform и разделе State документации HashiCorp.

Файл Terraform State по умолчанию хранится локально. Чтобы пользователи могли получать ID созданных ресурсов и обмениваться состоянием инфраструктуры, мы рекомендуем хранить Terraform State удаленно. Например, вы можете настроить хранение Terraform State в объектном хранилище Selectel.

Настроить хранение Terraform State в объектном хранилище Selectel

к сведению

Это инструкция для версии Terraform 1.6.0 и выше.

  1. Создайте контейнер в объектном хранилище.

  2. В конфигурационный файл добавьте блок backend:

    terraform {
    required_providers {
    selectel = {
    source = "selectel/selectel"
    version = "6.0.0"
    }
    openstack = {
    source = "terraform-provider-openstack/openstack"
    version = "2.1.0"
    }
    }

    backend "s3" {
    endpoints = { s3 = "https://s3.ru-1.storage.selcloud.ru" }
    key = "<file_name>.tfstate"
    region = "ru-1"
    skip_region_validation = true
    skip_credentials_validation = true
    skip_requesting_account_id = true
    skip_s3_checksum = true
    skip_metadata_api_check = true
    }
    }

    Укажите <file_name> — имя файла с состоянием Terraform в контейнере объектного хранилища.

  3. Создайте файл secret.backend.tfvars и добавьте в него чувствительную информацию, которая необходима для авторизации в объектном хранилище:

    bucket     = "<container_name>"
    access_key = "<access_key>"
    secret_key = "<secret_key>"

    Укажите:

    • <container_name> — имя контейнера в объектном хранилище, в котором будет храниться файл с состоянием Terraform. Можно посмотреть в панели управления в разделе Объектное хранилищеКонтейнеры;
    • <access_key> — идентификатор S3-ключа Access Key ID, который выдан пользователю;
    • <secret_key> — секретный S3-ключ Secret Access Key.
  4. Инициализируйте изменения конфигурации Terraform:

    terraform init -backend-config=secret.backend.tfvars