我当前正在使用默认工作空间,并且我的文件夹结构是这样的-
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
}
}
我正在努力如何在所有文件夹中包含此后端配置,例如我想在应用程序,mysql和vpc(用于Dynamodb的差异键)中使用相同的后端s3存储桶,但是虽然它在一个文件夹中有效,在第二个文件夹中,terraform想要同时删除S3存储桶和Dynamodb。
答案 0 :(得分:1)
我建议您在Terraform代码中使用module
结构。
喜欢:
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
请参阅:
这里a repository使用
module
结构。