Terraform Module Registry API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

이것은 Terraform Module Registry의 API 문서입니다.

경고: 이 API는 Terraform CLI에 의해 사용되며 일반적으로 수동으로 사용하도록 만들어진 것이 아닙니다. 문서화되지 않은 인증 방법은 미래에 제거 될 수 있습니다.

GitLab Terraform Module Registry에서 Terraform 모듈을 업로드하고 설치하는 방법은 Terraform Module Registry documentation을 참조하십시오.

특정 모듈에 대한 사용 가능한 버전 목록

특정 모듈에 대한 사용 가능한 버전 목록을 얻습니다.

GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions
속성 유형 필수 설명
module_namespace 문자열 Terraform 모듈의 프로젝트 또는 하위 그룹이 속한 최상위 그룹(네임스페이스)입니다.
module_name 문자열 모듈 이름
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
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 문자열 Terraform 모듈의 프로젝트가 속한 그룹입니다.
module_name 문자열 모듈 이름
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
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 문자열 Terraform 모듈의 프로젝트가 속한 그룹입니다.
module_name 문자열 모듈 이름
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
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 문자열 Terraform 모듈의 프로젝트가 속한 그룹입니다.
module_name 문자열 모듈 이름
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
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 문자열 Terraform 모듈 프로젝트가 속한 그룹입니다.
module_name 문자열 모듈 이름입니다.
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
module_version 문자열 다운로드할 특정 모듈 버전입니다.
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 문자열 Terraform 모듈 프로젝트가 속한 그룹입니다.
module_name 문자열 모듈 이름입니다.
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
module_version 문자열 다운로드할 특정 모듈 버전입니다.
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 정수/문자열 프로젝트의 ID 또는 URL 인코딩된 경로입니다.
module_name 문자열 모듈 이름입니다.
module_system 문자열 모듈 시스템 또는 공급자의 이름입니다.
module_version 문자열 아니요 다운로드할 특정 모듈 버전입니다. 누락된 경우 최신 버전이 다운로드됩니다.
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 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로입니다.
module-name 문자열 모듈 이름입니다.
module-system 문자열 모듈 시스템 또는 공급자의 이름입니다.
module-version 문자열 업로드할 특정 모듈 버전입니다.
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"
}