如何将Terraform_remote_state与远程后端和前缀配置一起使用



我正在尝试使用remote后端使用Terraform的terraform_remote_state,并获得以下配置并获得以下错误:

Error: Error refreshing state: 1 error occurred:
    * data.terraform_remote_state.network: 1 error occurred:
    * data.terraform_remote_state.network: data.terraform_remote_state.network: error loading the remote state: default state not supported
You can create a new workspace with the "workspace new" command.

这是我的Terraform文件:

# terraform/aws/my-app/network/main.tf
# terraform workspace here is "stg"
terraform {
  required_version = "~> 0.11"
  required_providers {
    aws = "~ 2.11"
  }
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"
    workspaces {
      prefix = "my-app-network-"
    }
  }
}
locals {
  prefix_name = "${var.app_name}-${terraform.workspace}"
  tags = {
    app         = "${var.app_name}"
    environment = "${terraform.workspace}"
  }
}
provider "aws" {
  region = "${var.aws_region}"
}
data "aws_availability_zones" "available" {}
module "network" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "1.64.0"
  name = "${local.prefix_name}"
  cidr = "172.10.0.0/16"
  azs                 = "${slice(data.aws_availability_zones.available.names, 0, 2)}"
  public_subnets      = ["172.10.10.0/24", "172.10.11.0/24"]
  private_subnets     = ["172.10.20.0/24", "172.10.21.0/24"]
  database_subnets    = ["172.10.30.0/24", "172.10.31.0/24"]
  elasticache_subnets = ["172.10.40.0/24", "172.10.41.0/24"]
  enable_nat_gateway = true
  tags = "${local.tags}"
}

# terraform/aws/my-app/database/main.tf
# terraform workspace here is "stg"
terraform {
  required_version = "~> 0.11"
  required_providers {
    aws = "~ 2.11"
  }
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-ord"
    workspaces {
      prefix = "my-app-database-"
    }
  }
}
locals {
  prefix_name = "${var.app_name}-${terraform.workspace}"
  tags = {
    app         = "${var.app_name}"
    environment = "${terraform.workspace}"
  }
}
provider "aws" {
  region = "${var.aws_region}"
}
data "terraform_remote_state" "network" {
  backend = "remote"
  config {
    organization = "my-org"
    workspaces {
      prefix = "my-app-network-"
    }
  }
}
data "aws_availability_zones" "available" {}
resource "random_string" "password" {
  length  = 32
  special = false
}
resource "aws_rds_cluster" "this" {
  cluster_identifier = "${local.prefix_name}-mysql"
  availability_zones     = ["${slice(data.aws_availability_zones.available.names, 0, 2)}"]
  db_subnet_group_name   = "${data.terraform_remote_state.network.database_subnet_group}"
  database_name   = "database"
  master_username = "user"
  master_password = "${random_string.password.result}"
  backup_retention_period = 5
  preferred_backup_window = "07:00-09:00"
  skip_final_snapshot     = true
  tags = "${local.tags}"
}

如果您使用的是Terraform云服务,并且您的执行模式设置为远程,则Terraform.Workspace变量将无法正确初始化。临时修复 - 将执行模式设置为本地,然后将适当初始化terraform.workspace。

这是一个已知的错误:https://github.com/hashicorp/terraform/issues/22802希望它会很快修复。

最新更新