Использование удаленного состояния Terraform в S3 с несколькими папками - PullRequest
3 голосов
/ 24 октября 2019

В настоящее время я использую рабочее пространство по умолчанию, и моя структура папок выглядит следующим образом -

dev
        ├── app
        │   └── main.tf
        ├── mysql
        │   └── main.tf
        └── vpc
            └── main.tf

У меня создан бэкэнд s3, и он отлично работает для одной папки

terraform {
  backend "s3" {
    bucket         = "mybucket"
    key            = "global/s3/mykey/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-state-wellness-nonprod"
    encrypt        = true
  }
}

Я изо всех сил пытаюсь включить этот внутренний конфигурационный файл во все папки, например, я хочу использовать один и тот же бэкэнд s3 bucket в app, mysql и vpc (diff ключи для Dynamodb), но пока это работает в одной папке, во второйпапка terraform хочет удалить как S3 bucket, так и Dynamodb.

1 Ответ

1 голос
/ 25 октября 2019

Я рекомендую вам использовать module структуру в коде terraform.

например:

   dev
    ├──modules
    │    ├── app
    │    │   └── app.tf
    │    ├── mysql
    │    │   └── mysql.tf
    │    └── vpc
    │        └── vpc.tf
    └──main.tf

main.tf:

module "app" {
  source = "./modules/app"
...
}

module "mysql" {
  source = "./modules/mysql"
...
}

module "vpc" {
  source = "./modules/vpc"
...
}

terraform {
  backend "s3" {
    ...
  }
}

Если вы хотите применить/ уничтожить каждый модуль:

terraform apply -target module.app
terraform destroy -target module.app

См .:

Вот хранилище с использованием структуры module.

...