Terraform Registry API

本文是 Terraform Module的 API 文档。

有关如何从极狐GitLab 基础设施库上传和安装 Terraform Module 的说明,请参阅 Terraform Module 镜像库文档

列出特定 Module 的可用版本

获取特定 Module 的可用版本。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目或子群组所属的顶级群组(命名空间)
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/versions"

响应示例:

{
  "modules": [
    {
      "versions": [
        {
          "version": "1.0.0",
          "submodules": [],
          "root": {
            "dependencies": [],
            "providers": [
              {
                "name": "local",
                "version":""
              }
            ]
          }
        },
        {
          "version": "0.9.3",
          "submodules": [],
          "root": {
            "dependencies": [],
            "providers": [
              {
                "name": "local",
                "version":""
              }
            ]
          }
        }
      ],
      "source": "https://gitlab.example.com/group/hello-world"
    }
  ]
}

特定 Module 的最新版本

获取特定 Module 的最新版本信息。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目所属的群组
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local"

响应示例:

{
  "name": "hellow-world/local",
  "provider": "local",
  "providers": [
    "local"
  ],
  "root": {
    "dependencies": []
  },
  "source": "https://gitlab.example.com/group/hello-world",
  "submodules": [],
  "version": "1.0.0",
  "versions": [
    "1.0.0"
  ]
}

获取特定 Module 的特定版本

获取特定 Module 的特定版本信息。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/1.0.0
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目所属的群组
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0"

响应示例:

{
  "name": "hellow-world/local",
  "provider": "local",
  "providers": [
    "local"
  ],
  "root": {
    "dependencies": []
  },
  "source": "https://gitlab.example.com/group/hello-world",
  "submodules": [],
  "version": "1.0.0",
  "versions": [
    "1.0.0"
  ]
}

获取下载最新 Module 版本的 URL

X-Terraform-Get Header 中获取最新 Module 版本的下载 URL。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/download
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目所属的群组
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/download"

响应示例:

HTTP/1.1 204 No Content
Content-Length: 0
X-Terraform-Get: /api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0/file?token=&archive=tgz

在底层,此 API 端点跳转到 packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download

获取下载特定 Module 版本的 URL

X-Terraform-Get Header 中获取下载特定 Module 版本的 URL。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目所属的群组
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
module_version string yes 要下载的特定 Module 版本
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0/download"

响应示例:

HTTP/1.1 204 No Content
Content-Length: 0
X-Terraform-Get: /api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0/file?token=&archive=tgz

下载 Module

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/file
参数 类型 是否必需 描述
module_namespace string yes Terraform Module 项目所属的群组
module_name string yes Module 名称
module_system string yes Module 系统或提供者的名称
module_version string yes 要下载的特定 Module 版本
curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0/file"

将输出写入文件:

curl --header "Authorization: Bearer <personal_access_token>" "https://gitlab.example.com/api/v4/packages/terraform/modules/v1/group/hello-world/local/1.0.0/file" --output hello-world-local.tgz