Я пытаюсь использовать 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
, хотя вместо того, чтобы создавать новый репо, он пытается изменить 1-й. Кажется, это из-за имени ресурса new_repo
. Я же не хочу каждый раз это редактировать?
Мне просто нужен один .tf, который я могу запускать, когда мне нужно новое репо. Как я могу сделать это с несколькими именами ресурсов?
Это происходит потому, что вы продолжаете изменять один и тот же экземпляр github_repository.new_repo
. Если вы действительно не хотите разделять проекты по разным папкам, вы можете использовать рабочие пространства или использовать 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
.