med*_*cau 7 github terraform terraform-provider-github
我正在尝试导入已经存在的资源,这些资源无法重新创建,而且有很多。
有些配置对于所有资源来说都是基本的,对于某些资源来说有一些小的变化。
我想用一个命令导入所有资源,一项一项地导入非常繁琐而且容易出错。目前正在导入单一资源:
terraform import 'github_repository.repo_config["repo2"]' repo2
Run Code Online (Sandbox Code Playgroud)
import
如果要导入所有资源,该命令会是什么样子?
配置如下:
terraform {
required_providers {
github = {
source = "integrations/github"
version = "~> 5.0"
}
}
}
provider "github" {
owner = "medecau"
}
variable "repo_config" {
type = map(object({
description = string
homepage_url = string
topics = list(string)
}))
default = {
"repo1" = {
description = "Repo 1"
homepage_url = "https://medecau.github.io/repo1/"
topics = ["topic1", "topic2", "topic3"]
}
"repo2" = {
description = "Repo 2"
homepage_url = null
topics = null
}
}
}
variable "default_repo_config" {
type = object({
description = string
homepage_url = string
topics = list(string)
})
default = {
description = ""
homepage_url = ""
topics = []
}
}
data "github_repositories" "medecau_repos" {
query = "user:medecau"
include_repo_id = true
}
resource "github_repository" "repo_config" {
# cast to set to remove duplicates
for_each = toset(data.github_repositories.medecau_repos.names)
name = each.value
description = lookup(var.repo_config, each.value, var.default_repo_config).description
homepage_url = lookup(var.repo_config, each.value, var.default_repo_config).homepage_url
topics = lookup(var.repo_config, each.value, var.default_repo_config).topics
has_issues = true
has_projects = false
has_wiki = false
vulnerability_alerts = true
security_and_analysis {
advanced_security {
status = "enabled"
}
secret_scanning {
status = "enabled"
}
secret_scanning_push_protection {
status = "enabled"
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 0
terraform import ..
到目前为止,terraform 本身不支持通过单个调用导入多个资源。
然而terraformer可能会减少你的工作量。请浏览Terraformer Github 文档以验证这是否适合您。
注意:仅支持组织资源。