GitLab Terraform 도우미
자세한 내용 : Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
경고 : Terraform CI/CD 템플릿은 폐기되었으며 GitLab 18.0에서 제거될 예정입니다. 자세한 정보는 폐기 알림을 확인하세요.
GitLab은 GitLab 관리 Terraform State와의 통합을 쉽게하기 위해 두 가지 도우미를 제공합니다.
-
gitlab-terraform
스크립트는terraform
명령어의 간단한 래퍼입니다. -
terraform-images
컨테이너 이미지에는gitlab-terraform
스크립트와terraform
자체가 포함되어 있습니다.
두 도우미는 Terraform 이미지 프로젝트에서 유지보수됩니다.
gitlab-terraform
gitlab-terraform
스크립트는 terraform
명령어의 간단한 래퍼입니다.
CI/CD 파이프라인에서 gitlab-terraform
을 실행하여 GitLab 관리 Terraform State 백엔드에 연결하기 위한 필요한 환경 변수를 설정하세요.
도우미 스크립트를 소스에서 가져오세요(실행하지는 마세요)
gitlab-terraform
스크립트가 소스될 때,
환경을 terraform
호출을 구성하지만,
실제로 terraform
은 실행되지 않습니다. 추가적인 단계를 준비하거나 terragrunt
와 같은
대체 도구를 사용해야 하는 경우 스크립트를 소스하세요.
스크립트를 소스하려면 다음을 실행하세요 :
source $(which gitlab-terraform)
BusyBox와 같은 일부 쉘은 다른 스크립트가 귀하의 스크립트를 소스화하는 경우에 대문자를 지원하지 않습니다. 자세한 정보는 이 Stack Overflow 스레드를 참조하세요.
이 문제를 해결하려면 bash
, zsh
, 또는 ksh
를 사용하거나 셸에서 직접 gitlab-terraform
을 소스하세요.
명령어
다음 명령어로 gitlab-terraform
을 실행할 수 있습니다.
명령어 | 명령줄 전달? | 암묵적 init? | 설명 |
---|---|---|---|
gitlab-terraform apply
| 예 | 예 |
terraform apply 를 실행합니다.
|
gitlab-terraform destroy
| 예 | 예 |
terraform destroy 를 실행합니다.
|
gitlab-terraform fmt
| 예 | 아니요 | 검사 모드에서 terraform fmt 를 실행합니다.
|
gitlab-terraform init
| 예 | 해당 없음 |
terraform init 를 실행합니다.
|
gitlab-terraform plan
| 예 | 예 |
terraform plan 을 실행하고 plan.cache 파일을 생성합니다.
|
gitlab-terraform plan-json
| 아니요 | 아니요 |
plan.cache 파일을 GitLab Terraform 보고서로 변환합니다 MR 통합을 위해.
|
gitlab-terraform validate
| 예 | 예 (백엔드 미포함) |
terraform validate 를 실행합니다.
|
gitlab-terraform -- <cmd>
| 예 | 아니요 | 래핑되었더라도 terraform <cmd> 를 실행합니다.
|
gitlab-terraform <cmd>
| 예 | 아니요 | 명령어가 래핑되지 않은 경우 terraform <cmd> 를 실행합니다.
|
일반 변수
gitlab-terraform
을 실행할 때, 다음 변수가 구성됩니다.
변수 | 기본값 | 설명 |
---|---|---|
TF_ROOT
| 설정되지 않음 | Terraform 구성물의 루트. 설정된 경우, Terraform -chdir 인수 값으로 사용됩니다. 모든 읽기 및 쓰기 파일은 지정된 구성 루트에 상대적입니다.
|
TF_CLI_CONFIG_FILE
| $HOME/.terraformrc
| Terraform 구성 파일의 위치. |
TF_IN_AUTOMATION
| true
| Terraform 명령어가 자동화된 것임을 나타내기 위해 true 로 설정합니다.
|
TF_GITLAB_SOURCED
| false
|
gitlab-terraform 이 소스화된 경우 true 로 설정합니다.
|
TF_PLAN_CACHE
|
$TF_ROOT/plan.cache 또는 $PWD/plan.cache
| 계획 캐시 파일의 위치. TF_ROOT 가 설정되지 않은 경우, 경로는 현재 작업 디렉토리 ($PWD )에 상대적입니다.
|
TF_PLAN_JSON
|
$TF_ROOT/plan.json 또는 $PWD/plan.json
|
MR 통합을 위한 계획 JSON 파일의 위치. TF_ROOT 가 설정되지 않은 경우, 경로는 현재 작업 디렉토리 ($PWD )에 상대적입니다.
|
DEBUG_OUTPUT
| "false"
|
"true" 로 설정하면 모든 명령문이 set -x 와 함께 기록됩니다.
|
GitLab에서 관리하는 Terraform 상태 변수
gitlab-terraform
을 실행할 때 이러한 변수가 구성됩니다.
변수 | 기본값 | 설명 |
---|---|---|
TF_STATE_NAME
| 설정되지 않음 |
TF_ADDRESS 가 설정되지 않고 TF_STATE_NAME 이 제공된 경우 TF_STATE_NAME 의 값은 GitLab에서 관리하는 Terraform State 이름으로 사용됩니다.
|
TF_ADDRESS
|
$TF_STATE_NAME 을 위한 Terraform State API URL
|
TF_HTTP_ADDRESS 의 기본값으로 사용됩니다. 기본적으로 TF_STATE_NAME 을 GitLab에서 관리하는 Terraform State 이름으로 사용합니다.
|
TF_USERNAME
|
$GITLAB_USER_LOGIN 또는 $TF_PASSWORD 가 설정되지 않은 경우 gitlab-ci-token
|
TF_HTTP_USERNAME 의 기본값으로 사용됩니다.
|
TF_PASSWORD
| $CI_JOB_TOKEN
|
TF_HTTP_PASSWORD 의 기본값으로 사용됩니다.
|
TF_HTTP_ADDRESS
| $TF_ADDRESS
| Terraform 백엔드 주소. |
TF_HTTP_LOCK_ADDRESS
| $TF_ADDRESS/lock
| Terraform 백엔드 잠금 엔드포인트 주소. |
TF_HTTP_LOCK_METHOD
| POST
| Terraform 백엔드 잠금 엔드포인트에 사용할 메서드. |
TF_HTTP_UNLOCK_ADDRESS
| $TF_ADDRESS/lock
| Terraform 백엔드 잠금 해제 엔드포인트 주소. |
TF_HTTP_UNLOCK_METHOD
| DELETE
| Terraform 백엔드 잠금 해제 엔드포인트에 사용할 메서드. |
TF_HTTP_USERNAME
| $TF_USERNAME
| Terraform 백엔드 인증에 사용할 사용자 이름. |
TF_HTTP_PASSWORD
| $TF_PASSWORD
| Terraform 백엔드 인증에 사용할 비밀번호. |
TF_HTTP_RETRY_WAIT_MIN
| 5
| Terraform 백엔드에 대한 HTTP 요청 시도 사이의 최소 대기 시간(초). |
명령 변수
gitlab-terraform
을 실행할 때 이러한 변수가 구성됩니다.
변수 | 기본값 | 설명 |
---|---|---|
TF_IMPLICIT_INIT
| true
|
true 인 경우 래핑된 명령 실행 전 암시적 terraform init 이 실행됩니다.
|
TF_INIT_NO_RECONFIGURE
| false
|
true 인 경우 암시적 terraform init 이 -reconfigure 없이 실행됩니다.
|
TF_INIT_FLAGS
| 설정되지 않음 | 추가적인 terraform init 플래그입니다.
|
Terraform 입력 변수
gitlab-terraform
을 실행할 때 이러한 Terraform 입력 변수가 자동으로 설정됩니다.
기본 값에 대한 자세한 내용은 사전 정의된 변수를 참조하십시오.
변수 | 기본값 |
---|---|
TF_VAR_CI_JOB_ID
| $CI_JOB_ID
|
TF_VAR_CI_COMMIT_SHA
| $CI_COMMIT_SHA
|
TF_VAR_CI_JOB_STAGE
| $CI_JOB_STAGE
|
TF_VAR_CI_PROJECT_ID
| $CI_PROJECT_ID
|
TF_VAR_CI_PROJECT_NAME
| $CI_PROJECT_NAME
|
TF_VAR_CI_PROJECT_NAMESPACE
| $CI_PROJECT_NAMESPACE
|
TF_VAR_CI_PROJECT_PATH
| $CI_PROJECT_PATH
|
TF_VAR_CI_PROJECT_URL
| $CI_PROJECT_URL
|
Terraform 이미지
gitlab-terraform
도우미 스크립트와 terraform
자체는 컨테이너 이미지에 제공됩니다
registry.gitlab.com/gitlab-org/terraform-images/
에서 제공되는 이미지를 사용하여 통합을 구성하고 관리할 수 있습니다.
다음 이미지가 제공됩니다:
이미지 이름 | 태그 | 설명 |
---|---|---|
stable
| latest
| 최신 terraform-images 릴리스와 최신 Terraform 릴리스가 번들되어 있습니다.
|
releases/$TERRAFORM_VERSION
| latest
| 특정 Terraform 릴리스와 번들된 최신 terraform-images 릴리스입니다.
|
releases/$TERRAFORM_VERSION
| $TERRAFORM_IMAGES_VERSION
| 특정 Terraform 릴리스와 번들된 특정 terraform-images 릴리스입니다.
|
지원되는 조합에 대해서는 terraform-images 컨테이너 레지스트리를 참조하세요.