Configure Terraform State storage
Terraform State (Terraform state) is a file with the .tfstate extension that stores up-to-date information about the infrastructure state and the configurations used. Terraform State is created after the first time you run the terraform apply command and is updated whenever configuration files are changed. Terraform compares the actual infrastructure with its description in the Terraform State file. If Terraform detects discrepancies, it modifies the actual infrastructure to match the description in Terraform State again. For more information about Terraform State, see the Terraform State in HCP Terraform article and the State section of the HashiCorp documentation.
By default, the Terraform State file is stored locally. To allow users to retrieve the IDs of created resources and share the infrastructure state, we recommend storing the Terraform State remotely. For example, you can configure Terraform State storage in Selectel S3.
Configure Terraform State storage in Selectel S3
This instruction is for Terraform version 1.6.0 and later.
-
Add the
backend:block to the configuration file:terraform {required_providers {selectel = {source = "selectel/selectel"version = "~> 6.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 = trueskip_credentials_validation = trueskip_requesting_account_id = trueskip_s3_checksum = trueskip_metadata_api_check = true}}Specify
<file_name>— the name of the Terraform State file in the S3 bucket. -
Create a
secret.backend.tfvarsfile and add sensitive information required for S3 authorization to it:bucket = "<bucket_name>"access_key = "<access_key>"secret_key = "<secret_key>"Specify:
<bucket_name>— the name of the S3 bucket where the Terraform State file will be stored. You can find it in the Control panel in the S3 → Containers section;<access_key>— the S3 Access Key ID that was issued to the user;<secret_key>— the S3 Secret Access Key.
-
Initialize the Terraform configuration changes:
terraform init -backend-config=secret.backend.tfvars