Terraform Module Registry API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 Terraform CLI와 상호작용합니다. 이 API는 Terraform CLI에서 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다. 지정된 모듈에 대한 모든 사용 가능한 버전을 나열합니다.
이 API를 사용하여 Terraform CLI와 상호작용합니다.
이 API는 Terraform CLI에서 사용하며 일반적으로 수동으로 사용하기 위한 것이 아닙니다. 문서화되지 않은 인증 방법은 향후 제거될 수 있습니다.
특정 모듈의 사용 가능한 버전 목록#
지정된 모듈에 대한 모든 사용 가능한 버전을 나열합니다.
GET packages/terraform/modules/v1/:module_namespace/:module_name/:module_system/versions
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
module_namespace |
string | 예 | Terraform 모듈의 프로젝트 또는 하위 그룹이 속한 최상위 그룹(네임스페이스). |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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 |
string | 예 | Terraform 모듈의 프로젝트가 속한 그룹. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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 |
string | 예 | Terraform 모듈의 프로젝트가 속한 그룹. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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 |
string | 예 | Terraform 모듈의 프로젝트가 속한 그룹. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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 |
string | 예 | Terraform 모듈의 프로젝트가 속한 그룹. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
module_version |
string | 예 | 다운로드할 특정 모듈 버전. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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 |
string | 예 | Terraform 모듈의 프로젝트가 속한 그룹. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
module_version |
string | 예 | 다운로드할 특정 모듈 버전. |
curl --header "Authorization: Bearer <personal_access_token>" \
--url "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>" \
--url "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 or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
module_name |
string | 예 | 모듈 이름. |
module_system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
module_version |
string | 아니요 | 다운로드할 특정 모듈 버전. 생략하면 최신 버전이 다운로드됩니다. |
curl --user "<username>:<personal_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/packages/terraform/modules/hello-world/local/1.0.0"
파일로 출력 저장:
curl --user "<username>:<personal_access_token>" \
--url "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 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
module-name |
string | 예 | 모듈 이름. |
module-system |
string | 예 | 모듈 시스템 또는 공급자 이름. |
module-version |
string | 예 | 업로드할 특정 모듈 버전. |
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"
}
