테라폼과 GitLab을 사용한 인프라스트럭처의 코드화

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

GitLab을 사용하여 인프라스트럭처를 관리하려면, 테라폼과의 통합을 사용하여 리소스를 정의하고 버전 관리하고 재사용할 수 있습니다. 공유할 수 있습니다.

  • 컴퓨팅, 저장 및 네트워킹 리소스와 같은 저수준 컴포넌트를 관리합니다.
  • DNS 항목 및 SaaS 기능과 같은 고수준 컴포넌트를 관리합니다.
  • GitOps 배포 및 인프라스트럭처-as-Code(IaC) 워크플로우를 통합합니다.
  • GitLab을 테라폼 상태 리포지터리로 사용합니다.
  • 일반적이고 복잡한 인프라스트럭처 패턴을 단순화하기 위해 테라폼 모듈을 저장하고 사용합니다.

GitLab의 테라폼 통합 기능 개요를 시청하세요.

테라폼과 OpenTofu 지원

GitLab은 테라폼과 OpenTofu 모두와 통합됩니다. 대부분의 기능이 완전히 호환되며, 다음을 포함합니다:

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

프로젝트를 테라폼과 통합

caution
테라폼 CI/CD 템플릿은 폐기되고 GitLab 18.0에서 제거됩니다. 자세한 내용은 폐기 공지를 참조하세요.

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

시작하려면, 최적의 템플릿을 선택하세요:

모든 템플릿:

  • 테라폼 상태 저장을 GitLab에서 관리합니다.
  • test, validate, build, deploy과 같이 네 개의 파이프라인 단계를 트리거합니다.
  • test, validate, plan, plan-json 명령을 실행합니다. 또한 기본 브랜치에서만 apply를 실행합니다.
  • IaC 스캔을 사용하여 보안 문제를 확인합니다.

최신 테라폼 템플릿 (폐기됨)

최신 템플릿은 가장 최근의 GitLab 버전과 호환됩니다. 가장 최근의 GitLab 기능을 제공하지만 잠재적으로 파기 변경 사항이 포함될 수 있습니다.

최신 테라폼 템플릿을 안전하게 사용할 수 있습니다.

  • GitLab.com을 사용하는 경우
  • 모든 새로운 GitLab 릴리스마다 Self-Managed형 형 인스턴스를 사용하는 경우

안정적이고 고급 테라폼 템플릿 (폐기됨)

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

note
각 GitLab의 주요 릴리스(예: 15.0)마다 최신 템플릿이 기존 템플릿을 대체합니다. 이 프로세스는 파기 변경 사항을 도입할 수 있습니다. 필요한 경우 템플릿의 이전 버전을 사용할 수 있습니다.

테라폼 템플릿 사용 (폐기됨)

테라폼 템플릿을 사용하려면:

  1. 좌측 사이드바에서 검색 또는 이동을 선택하여 테라폼과 통합하려는 프로젝트를 찾습니다.
  2. 코드 > 리포지터리를 선택합니다.
  3. .gitlab-ci.yml 파일을 편집하고, include 속성을 사용하여 테라폼 템플릿을 가져옵니다:

    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
      # 만약 테라폼 파일이 하위 디렉터리에 있다면, TF_ROOT를 그에 맞게 설정하십시오. 예시:
      # TF_ROOT: terraform/production
    
  5. 선택 사항. 테라폼 템플릿을 사용하여 기본적으로 있는 속성을 파일에서 오버라이드합니다.

자체 테라폼 CI/CD 템플릿 빌드 및 호스팅

GitLab은 더는 테라폼 CI/CD 템플릿과 terraform-images (포함된 작업 이미지, terraform를 포함합니다.)를 배포하지 않지만, 여전히 GitLab 파이프라인에서 테라폼을 사용할 수 있습니다.

자체 템플릿 및 이미지를 만들고 호스팅하는 방법은 테라폼 이미지 프로젝트를 참조하세요.

테라폼 템플릿 레시피

GitLab이 제공하는 템플릿 레시피는 테라폼 템플릿 레시피를 참조하세요.

프로젝트를 OpenTofu와 통합

OpenTofu는 GitLab OpenTofu CI/CD 컴포넌트를 사용하여 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를 참조하세요.

관련 주제