Terraform과 GitLab을 사용한 인프라스트럭처 작성


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

GitLab을 사용하여 인프라스트럭처를 관리하려면 Terraform 또는 OpenTofu 통합을 사용하여 리소스를 정의할 수 있으며 버전 관리, 재사용 및 공유가 가능합니다.

  • 컴퓨팅, 스토리지 및 네트워킹 리소스와 같은 저수준 구성 요소 관리
  • DNS 항목 및 SaaS 기능과 같은 고수준 구성 요소 관리
  • GitLab을 Terraform 상태 저장소로 사용
  • 일반 및 복잡한 인프라스트럭처 패턴을 간소화하기 위해 Terraform 모듈을 저장하고 사용
  • GitOps 배포 및 IaC(Infrastructure-as-Code) 워크플로 통합

GitLab의 Terraform 통합 기능 개요를 시청하세요.

Terraform과 OpenTofu 지원

GitLab은 Terraform과 OpenTofu를 모두 통합시킵니다.
대부분의 기능이 완전히 호환되며 다음을 포함합니다:

단순함을 위해 GitLab 문서는 주로 Terraform을 참조합니다. 그러나 Terraform과 OpenTofu 통합 간의 차이점은 문서화되어 있습니다.

파이프라인에서 OpenTofu 프로젝트 빠르게 시작하기

OpenTofu는 GitLab OpenTofu CI/CD 구성 요소를 통해 모든 Terraform 특정 GitLab 기능과 통합할 수 있습니다.

다음과 같이 해당 구성 요소를 포함하여 파이프라인에 validate, plan, apply 워크플로를 추가할 수 있습니다:

include:
  - component: gitlab.com/components/opentofu/validate-plan-apply@<VERSION>
    inputs:
      version: <VERSION>
      opentofu_version: <OPENTOFU_VERSION>
      root_dir: terraform/
      state_name: production

stages: [validate, build, deploy]

OpenTofu CI/CD 구성 요소 README에서 해당 구성 요소의 사용 방법 및 모든 사용 가능한 템플릿 및 입력에 대한 자세한 정보를 확인하세요.

파이프라인에서 Terraform 프로젝트 빠르게 시작하기

경고:
Terraform CI/CD 템플릿은 사용 중지되고 GitLab 18.0에서 제거될 예정입니다.
자세한 내용은 사용 중지 공지를 참조하세요.

GitLab과 Terraform의 통합은 GitLab CI/CD를 통해 이루어집니다. 프로젝트에 템플릿을 추가하고 거기서 사용자 정의할 수 있도록 include 속성을 사용하세요.

시작하려면 필요에 맞는 템플릿을 선택하세요:

모든 템플릿:

  • Terraform 상태 저장소 백엔드로 GitLab 관리 Terraform 상태 사용
  • test, validate, build, deploy 네 개의 파이프라인 단계 트리거
  • Terraform 명령 실행: test, validate, plan, plan-json. 기본 브랜치에서만 apply를 실행합니다.
  • IaC 스캐닝을 사용하여 보안 문제 확인

최신 Terraform 템플릿 (사용 중지됨)

최신 템플릿은 가장 최근의 GitLab 버전과 호환됩니다. 가장 최근의 GitLab 기능을 제공하지만 중단될 수 있는 변경 사항이 포함될 수도 있습니다.

최신의 Terraform 템플릿을 안전하게 사용할 수 있습니다:

  • GitLab.com을 사용하는 경우
  • 매 새로운 GitLab 릴리스마다 업데이트하는 자체 관리 인스턴스를 사용하는 경우

안정적이고 고급 Terraform 템플릿 (사용 중지됨)

GitLab을 이전 버전으로 사용하는 경우 GitLab 버전과 템플릿 버전 사이의 호환성 오류가 발생할 수 있습니다. 이 경우 다음 중 하나의 템플릿을 사용할 수 있습니다:

참고:
각 GitLab 주요 릴리스(예: 15.0)에서 최신 템플릿이 이전 템플릿을 대체합니다. 이 프로세스는 중단될 수 있는 변경 사항을 도입할 수 있습니다. 필요한 경우 이전 버전의 템플릿을 사용할 수 있습니다.

Terraform 템플릿 사용 (사용 중지됨)

Terraform 템플릿을 사용하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 Terraform과 통합하려는 프로젝트를 찾습니다.
  2. 코드 > 저장소를 선택합니다.
  3. .gitlab-ci.yml 파일을 편집하고 include 속성을 사용하여 Terraform 템플릿을 가져옵니다.

    include:
     # 최신 템플릿을 가져오려면:
      - template: Terraform.latest.gitlab-ci.yml
     # 고급 최신 템플릿을 가져오려면:
      - template: Terraform/Base.latest.gitlab-ci.yml
     # 안정적인 템플릿을 가져오려면:
      - template: Terraform.gitlab-ci.yml
     # 고급 안정적인 템플릿을 가져오려면:
      - template: Terraform/Base.gitlab-ci.yml
    
  4. 아래 변수를 추가하세요:

    variables:
      TF_STATE_NAME: default
      # 만약 terraform 파일이 서브디렉토리에 있다면, TF_ROOT를 그에 맞게 설정하세요. 예시:
      # TF_ROOT: terraform/production
    
  5. 선택 사항. 가져온 템플릿에서 존재하는 속성을 .gitlab-ci.yml 파일에서 재정의하여 구성을 사용자 정의하세요.

자체 Terraform CI/CD 템플릿 빌드 및 호스팅

GitLab은 더 이상 Terraform CI/CD 템플릿 및 terraform-images(바탕이 되는 작업 이미지, terraform을 포함)을 배포하지 않지만 여전히 GitLab 파이프라인에서 Terraform을 사용할 수 있습니다.

자체 템플릿 및 이미지를 빌드하고 호스팅하는 방법에 대해 자세히 알아보려면 Terraform 이미지 프로젝트를 참조하세요.

Terraform 템플릿 레시피

GitLab이 제작한 템플릿 레시피에 대해서는 Terraform 템플릿 레시피를 참조하세요.

관련 주제