Terraform Module Registry API
所有级别

本文是 Terraform Module Registry的 API 文档。

有关如何从极狐GitLab Terraform Module Registry 上传和安装 Terraform Module 的说明,请参阅 Terraform Module Registry 文档

列出特定 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": "hello-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": "hello-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

从项目

GET /projects/:id/packages/terraform/modules/:module_name/:module_system/:module_version
属性 类型 是否必需 描述
id integer/string yes ID 或 URL 编码的项目路径。
module_name string yes 模块名称。
module_system string yes 模块系统或提供商的名称。
module_version string no 下载的特定模块版本。如果忽略,则下载最新版本。
curl --user "<username>:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/terraform/modules/hello-world/local/1.0.0"

将输入写入文件:

curl --user "<username>:<personal_access_token>" "https://gitlab.example.com/api/v4/projects/1/packages/terraform/modules/hello-world/local/1.0.0" --output hello-world-local.tgz

上传模块

PUT /projects/:id/packages/terraform/modules/:module-name/:module-system/:module-version/file
属性 类型 是否必需 描述
id integer or string yes ID 或 URL 编码的项目路径。
module-name string yes 模块名称。
module-system string yes 模块系统或提供商的名称。
module-version string yes 上传的特定模块版本。
curl --fail-with-body \
   --header "PRIVATE-TOKEN: <your_access_token>" \
   --upload-file path/to/file.tgz \
   --url  "https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/terraform/modules/my-module/my-system/0.0.1/file"

令牌可以被用来进行认证:

标头
PRIVATE-TOKEN 具有 api 范围的个人访问令牌
DEPLOY-TOKEN 具有 write_package_registry 范围的部署令牌
JOB-TOKEN 作业令牌

示例响应:

{
  "message": "201 Created"
}