如何导入多个terraform资源实例?

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 文档以验证这是否适合您。

注意:仅支持组织资源。