🔐 Как хранить Terraform State в хранилище Consul KV |

🔐 Как хранить Terraform State в хранилище Consul KV

Мануал

Terraform хранит свою конфигурацию и информацию об инфраструктуре, которой он управляет, в файле, называемом state file.

Этот файл используется для отслеживания метаданных и для сопоставления фактических ресурсов с конфигурацией.

По умолчанию этот файл состояния будет находиться локально в папке ваших проектов с именем terraform.tfstate.

Рекомендуется хранить состояния Terraform в высокодоступном удаленном хранилище данных.

Удаленный файл состояния позволяет делиться им между членами команды.

Terraform поддерживает сохранение состояния в:

  • Terraform Cloud
  • HashiCorp Consul
  • Amazon S3
  • Google Cloud Storage (GCS)
  • Alibaba Cloud OSS
  • Swift
  • Etcd
  • http
  • И остальные
В этом руководстве мы рассмотрим, как можно хранить состояние своей инфраструктуры в хранилище данных HashiCorp Consul KV.
Этот бэкэнд поддерживает блокировку состояний и подходит для обмена состояниями между членами команды.

Шаг 1: Настройте кластер Consul

Вам нужно иметь работающий кластер Consul, прежде чем вы сможете продолжить настройку.

У нас есть целая статья, посвященные только установке:

☸️ Как установить Cosnul в Kubernetes

Шаг 2: Настройте Terraform для использования Consul

Отредактируйте ваш файл Terraform main.tf и настройте внутреннее хранилище Consul.

# Backend
#terraform {
#  backend "local" {
#    path = "terraform.tfstate"
#  }
#}

terraform {
  backend "consul" {
    address  = "consul.example.com:8500"
    scheme   = "http"
    path     = "tf/terraform.tfstate"
    lock     = true
    gzip     = false
  }
}

Где:

  • http://consul.example.com:8500 это URL вашего кластера
  • tf/terraform.tfstate это путь к хранилищу consul KV.
  • lock Блокирует ваше состояние для всех операций, которые могли бы записать что-то
  • gzipИспользуется для сжатия данных о состоянии с помощью gzip
Если у вас есть аутентификация ACL, вам нужно установить:
  • access_token / CONSUL_HTTP_TOKEN – (Required) Access token
Инициализируйте ваш новый или существующий рабочий каталог Terraform:
$ terraform init -upgrade=true
Upgrading modules...
....
Initializing the backend...

Successfully configured the backend "consul"! Terraform will automatically
use this backend unless the backend configuration changes.

Initializing provider plugins...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

$ terraform apply
Если вы перейдете к разделу «Key/Value» в пользовательском интерфейсе Consul, вы увидите записанный путь.

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий