Terraform State представляет собой файл с расширением .tfstate, содержащий актуальную информацию о текущем состоянии инфраструктуры и применяемых конфигурациях. Этот файл создается автоматически после первого запуска команды terraform apply и обновляется каждый раз при внесении изменений в конфигурацию. Terraform использует этот файл для сопоставления реальной инфраструктуры с описанием, указанным в конфигурационных файлах.
При каждом выполнении команды, Terraform State позволяет определить различия между текущим состоянием инфраструктуры и ее желаемым состоянием, описанным в коде. Если обнаруживаются расхождения, Terraform автоматически вносит изменения в инфраструктуру, чтобы она снова соответствовала описанию в State-файле.
Для удобного совместного использования, доступа к уникальным идентификаторам созданных ресурсов и обмена состоянием между членами команды рекомендуется хранить этот файл в удаленном месте. Например, объектное хранилище Inferit может быть использовано для безопасного и централизованного хранения Terraform State.
Настройка хранения Terraform State в объектном хранилище
-
Для настройки хранения Terraform State в объектном хранилище необходимо создать бакет, или использовать уже существующий.
-
В файле main.tf необходимо добавить блок backend:
terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "1.54.1" \\\ указать актуальную
}
}
backend "s3" {
endpoints = { s3 = "https://s3.inferit.cloud" }
bucket = "<Имя_бакета>"
key = "<имя файла>.tfstate"
region = "default"
skip_region_validation = true
skip_credentials_validation = true
skip_requesting_account_id = true
skip_s3_checksum = true
skip_metadata_api_check = true
force_path_style = true
}
}
variable "user_name" {}
variable "tenant_name" {}
variable "password" {}
variable "auth_url" {}
provider "openstack" {
user_name = var.user_name
tenant_name = var.tenant_name
password = var.password
auth_url = var.auth_url
}
- Создать файл secret.backend.tfvars в той же директории, где находится файл main.tf. Указать данные для авторизации в объектном хранилище:
access_key = "<access_key>"
secret_key = "<secret_key>"
- Инициализировать изменения конфигурации Terraform:
terraform init -backend-config="secret.backend.tfvars"