0

我需要创建优化 terraform 的结构。

拥有我导入的根路径变量,如模块 /variables.tf

variable "aws_profile" { default = "default" }
variable "aws_region" { default = "us-east-1" }

之后有一个模块文件夹 /ec2_instance/main.tf

module "global_vars" {
  source = "../"
}

provider "aws" {
  region  = module.global_vars.aws_region
  profile = module.global_vars.aws_profile
}

terraform {
  backend "s3" {
    encrypt = true
    bucket  = "some_bucket"
    key     = "path_to_statefile/terraform.tfstate"
    region  = "region"
    profile = "profile"
  }
}

module "instances_cluster" {
  some actions
}

它正在工作,但我需要将后端和提供程序部分移动到根文件夹上的 main.tf 并像模块一样包含之后。我怎么能做到这一点?

我试图在带有后端部分的根文件夹上创建 /main.tf,但它们不工作并且支持在本地写入状态文件。

4

1 回答 1

0

您必须进行一些重构,但这些是我将采取的步骤

  1. terraform plan在根和模块中运行ec2_instance以验证零更改,以便可以开始重构
  2. 注释掉backendforec2_instance/main.tf
  3. 将后端 fromec2_instance/main.tf放入根目录main.tf
  4. 在根目录main.tf中,引用ec2_instance模块
  5. 在根模块中运行terraform plan并注意创建和删除
  6. 对于每个创建和删除对,创建一个terraform state mv语句并运行每个
  7. 验证terraform plan有零变化
于 2020-03-29T21:34:11.963 回答