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_each
或 count
,其中 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
。
我正在尝试使用 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_each
或 count
,其中 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
。