Terraform 创建多个没有重复资源名称的资源

Terraform Create Multiple Resources Without Duplicate Resource Names

我正在尝试使用 Terraform 创建多个 GitHub 存储库。我有以下内容:

terraform {
  required_providers {
    github = {
      source  = "integrations/github"
      version = "~> 4.0"
    }
  }
}

# Configure the GitHub Provider
provider "github" {
    token = var.gitub_token
}

# Create the repo
resource "github_repository" "new_repo" {
  name        = var.repo_name
  visibility = "public"
}

这第一次完美运行。我第二次 运行 它,使用不同的 repo_name,但是,它不是创建一个新的 repo,而是试图修改第一个。这似乎是因为 new_repo 资源名称。我不想每次都编辑它?

我只想要一个 .tf 我可以 运行 每当我想要一个新的 repo 时。我如何使用多个资源名称来做到这一点?

发生这种情况是因为您不断修改 github_repository.new_repo 的同一个实例。如果您真的不想将项目分成不同的文件夹,您可以使用 workspaces,或使用 for_eachcount,其中 repo_name 将是 list.例如:

terraform {
  required_providers {
    github = {
      source  = "integrations/github"
      version = "~> 4.0"
    }
  }
}

variable "repo_name" {
    default = ["name1", "name2", "name3"]
}

# Configure the GitHub Provider
provider "github" {
    token = var.gitub_token
}

# Create the repo
resource "github_repository" "new_repo" {
  for_each   = toset(var.repo_name)  
  name       = each.key
  visibility = "public"
}

这样,每当您添加或删除新的存储库时,您都必须更新 var.repo_name