Настроить хранение 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 и выше.
-
В конфигурационный файл добавьте блок
backend
:terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "5.4.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 в контейнере объектного хранилища. -
Создайте файл
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.
-
Инициализируйте изменения конфигурации Terraform:
terraform init -backend-config=secret.backend.tfvars