Terraform モジュールレジストリ API

Terraform Module RegistryのAPIドキュメントです。

caution
このAPIはTerraform CLIで利用されるもので、一般的に手動で利用するものではありません。文書化されていない認証方法は将来削除されるかもしれません。

GitLab Terraform Module RegistryからTerraformモジュールをアップロードしてインストールする方法については、Terraform Module Registryのドキュメントを参照してください。

特定のモジュールで利用可能なバージョンの一覧

特定のモジュールで利用可能なバージョンの一覧を取得します。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトまたはサブグループが属するトップレベルのグループ(名前空間)。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
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"
    }
  ]
}

特定のモジュールの最新バージョン

指定したモジュールの最新バージョンに関する情報を取得します。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトが属するグループ。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
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"
  ]
}

特定のモジュールの特定のバージョンを取得

指定したモジュールの特定のバージョンに関する情報を取得します。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/1.0.0
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトが属するグループ。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
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"
  ]
}

モジュールの最新バージョンをダウンロードするための URL を取得します。

X-Terraform-Get ヘッダで最新モジュールバージョンのダウンロードURLを取得します。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/download
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトが属するグループ。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
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

特定のモジュールバージョンをダウンロードするためのURLの取得

X-Terraform-Get ヘッダで特定のモジュールバージョンのダウンロード URL を取得します。

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/download
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトが属するグループ。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
module_version文字列です。yesダウンロードするモジュールのバージョン
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

モジュールのダウンロード

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/:module_version/file
属性種類必須説明
module_namespace文字列です。yesTerraformモジュールのプロジェクトが属するグループ。
module_name文字列です。yesモジュール名。
module_system文字列です。yesモジュールシステムまたはプロバイダの名前。
module_version文字列です。yesダウンロードするモジュールのバージョン
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