Terraform Remote StateFile для нескольких экземпляров одной конфигурации и дизайна Terraform

У меня есть требование создать набор из одинакового количества экземпляров для каждого из наших клиентов. Предположим, мои клиенты - Walmart, Apple и eBay. У каждого клиента одинаковое количество экземпляров, но изменяется конфигурация (подсеть, количество дисков и их размеры, образы ОС). Поэтому я создал файл переменных для каждого клиента и использовал его для запуска экземпляров. До сих пор все работает как положено. Я могу запускать экземпляры для каждого клиента с их собственной конфигурацией, а также могу изменять экземпляры по мере необходимости.

Теперь я пытаюсь переместить файл состояния с моего локального на удаленный. В backend.tf как мне взять keyкак динамично? После расследования backed.tf не может принимать какие-либо интерполяции (переменные), так как он загружается намного раньше, чем может быть инициализировано ядро ​​Terraform.

  1. Как мне решить эту проблему? Я попробовал описанный ниже подход, но мне нужно запустить init каждый раз, когда я переключаю клиентов.

terraform init --backend-config "key=apple.tfstate"

  1. Есть ли какие-либо фундаментальные проблемы с подходом, который я использовал для создания экземпляров с использованием отдельного файла переменных?

  2. Нужно ли мне использовать единый файл состояния для всех клиентов? если так, то у меня более 40 клиентов, и хранение всех клиентов в одном файле может быть рискованным / громоздким / медленным, верно?

Я не использую Terraform Enterprise или Terraform Cloud. Пожалуйста, дайте мне знать, как действовать. Спасибо!

Я использую команду ниже, чтобы применить изменения терраформ

      terraform apply -var-file=customers/apple.tfvars -state=statefile/apple.tfstate
terraform apply -var-file=customers/walmart.tfvars -state=statefile/walmart.tfstate

Структура папки

        ├── main.tf
  └── variables.tf
  ├── gcp_compute_disk
  │   ├── gcp_compute_disk.tf
  │   └── variables.tf
  ├── gcp_instance
  │   ├── gcp_instance.tf
  │   └── variables.tf
  ├── customers
  │   ├── apple.tfvars
  │   ├── ebay.tfvars
  │   ├── walmart.tfvars
  ├── statefile
  │   ├── apple.tfstate
  │   ├── ebay.tfstate
  │   ├── walmart.tfstate


0 ответов

Другие вопросы по тегам