GitLab Terraform 헬퍼
자세한 내용은 중단 발표를 참조하세요.
GitLab은 GitLab-managed Terraform State와의 통합을 용이하게 하기 위해 두 가지 헬퍼를 제공합니다.
-
gitlab-terraform
스크립트는terraform
명령어를 감싸는 얇은 래퍼입니다. -
terraform-images
컨테이너 이미지는gitlab-terraform
스크립트와terraform
자체를 포함합니다.
두 헬퍼는 Terraform Images 프로젝트에서 유지 관리됩니다.
gitlab-terraform
gitlab-terraform
스크립트는 terraform
명령어를 감싸는 얇은 래퍼입니다.
CI/CD 파이프라인에서 gitlab-terraform
을 실행하여 GitLab-managed Terraform State 백엔드와 연결하기 위한 필요한 환경 변수를 설정합니다.
헬퍼 스크립트 소스 (하지만 실행하지 않음)
gitlab-terraform
스크립트가 소스될 때,
terraform
호출을 위한 환경이 구성되지만, 실제로 terraform
은 실행되지 않습니다.
환경을 준비하기 위해 추가 단계를 수행해야 하거나 terragrunt
와 같은 대체 도구를 사용해야 할 때 스크립트를 소스할 수 있습니다.
스크립트를 소스하려면 다음을 실행하세요:
source $(which gitlab-terraform)
일부 셸(예: BusyBox)은 다른 스크립트가 귀하의 스크립트를 소스하는 경우를 지원하지 않습니다.
자세한 내용은 이 Stack Overflow 스레드를 참조하세요.
이 문제를 해결하려면 bash
, zsh
또는 ksh
를 사용하거나 셸에서 직접 gitlab-terraform
을 소스해야 합니다.
명령어
다음 명령어로 gitlab-terraform
을 실행할 수 있습니다.
Command | Forwards command line? | Implicit init? | Description |
---|---|---|---|
gitlab-terraform apply |
Yes | Yes |
terraform apply 를 실행합니다. |
gitlab-terraform destroy |
Yes | Yes |
terraform destroy 를 실행합니다. |
gitlab-terraform fmt |
Yes | No | 체크 모드에서 terraform fmt 를 실행합니다. |
gitlab-terraform init |
Yes | Not applicable |
terraform init 를 실행합니다. |
gitlab-terraform plan |
Yes | Yes |
terraform plan 을 실행하고 plan.cache 파일을 생성합니다. |
gitlab-terraform plan-json |
No | No |
plan.cache 파일을 GitLab Terraform 보고서로 변환하여 MR 통합을 수행합니다. |
gitlab-terraform validate |
Yes | Yes (without backend) |
terraform validate 를 실행합니다. |
gitlab-terraform -- <cmd> |
Yes | No | 래핑된 경우에도 terraform <cmd> 를 실행합니다. |
gitlab-terraform <cmd> |
Yes | No | 명령어가 래핑되지 않은 경우 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 상태 이름으로 사용됩니다. |
TF_ADDRESS |
$TF_STATE_NAME 에 대한 Terraform 상태 API URL |
TF_HTTP_ADDRESS 에 대한 기본값으로 사용됩니다. 기본적으로 TF_STATE_NAME 을 GitLab 관리 Terraform 상태 이름으로 사용합니다. |
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 릴리스와 함께 제공되는 최신 terraform-images 릴리스입니다. |
releases/$TERRAFORM_VERSION |
latest |
특정 Terraform 릴리스와 함께 제공되는 최신 terraform-images 릴리스입니다. |
releases/$TERRAFORM_VERSION |
$TERRAFORM_IMAGES_VERSION |
특정 Terraform 릴리스와 함께 제공되는 특정 terraform-images 릴리스입니다. |
지원되는 조합에 대한 정보는 terraform-images
컨테이너 레지스트리를 참조하십시오.