在具有多个文件夹的 s3 中使用 terraform 远程状态

Ill*_*ist 5 terraform terraform-provider-aws

我目前使用的是默认工作区,我的文件夹结构是这样的 -

dev
        ??? app
        ?   ??? main.tf
        ??? mysql
        ?   ??? main.tf
        ??? vpc
            ??? main.tf
Run Code Online (Sandbox Code Playgroud)

我创建了一个 s3 后端,它适用于单个文件夹

terraform {
  backend "s3" {
    bucket         = "mybucket"
    key            = "global/s3/mykey/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-state-wellness-nonprod"
    encrypt        = true
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力研究如何在所有文件夹中包含这个后端配置,就像我想在应用程序、mysql 和 vpc(Dynamodb 的差异键)中使用相同的后端 s3 存储桶,但是虽然这在一个文件夹中有效,但在第二个文件夹中文件夹 terraform 想要删除 S3 存储桶和 Dynamodb。

GNO*_*EAT 8

我建议您module在 terraform 代码中使用结构。

喜欢 :

   dev
    ???modules
    ?    ??? app
    ?    ?   ??? app.tf
    ?    ??? mysql
    ?    ?   ??? mysql.tf
    ?    ??? vpc
    ?        ??? vpc.tf
    ???main.tf
Run Code Online (Sandbox Code Playgroud)

主文件:

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

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

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

terraform {
  backend "s3" {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

如果要应用/销毁每个模块:

terraform apply -target module.app
terraform destroy -target module.app
Run Code Online (Sandbox Code Playgroud)

看 :

这是一个使用module结构的存储库