Terraform 및 GitLab을 이용한 코드로서의 인프라
GitLab을 사용하여 인프라를 관리하려면 Terraform 또는 OpenTofu와 통합하여 버전 관리, 재사용 및 공유할 수 있는 리소스를 정의할 수 있습니다:
- 컴퓨트, 스토리지 및 네트워킹 리소스와 같은 저수준 구성 요소 관리.
- DNS 항목 및 SaaS 기능과 같은 고수준 구성 요소 관리.
- GitLab을 Terraform 상태 저장소로 사용.
- 일반 및 복잡한 인프라 패턴을 단순화하기 위해 Terraform 모듈을 저장하고 사용.
- GitOps 배포 및 코드로서의 인프라(IaC) 워크플로 통합.
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 프로젝트 신속 시작
자세한 정보는 사용 중지 발표를 참조하세요.
GitLab과 Terraform의 통합은 GitLab CI/CD를 통해 이루어집니다.
Terraform 템플릿을 프로젝트에 추가하고 거기서 사용자 지정할 수 있도록 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 템플릿을 사용하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 Terraform과 통합할 프로젝트를 찾습니다.
-
코드 > 레포지토리를 선택합니다.
-
.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
-
아래에 설명된 대로 변수를 추가합니다:
variables: TF_STATE_NAME: default # Terraform 파일이 하위 디렉터리에 있는 경우 TF_ROOT를 적절히 설정합니다. 예: # TF_ROOT: terraform/production
-
선택 사항. 가져온 템플릿에 있는 속성을
.gitlab-ci.yml
파일에서 재정의하여 구성을 사용자 지정합니다.
자체 Terraform CI/CD 템플릿 구축 및 호스팅
GitLab은 더 이상 Terraform CI/CD 템플릿과 terraform-images
(기타 작업 이미지, 포함 terraform
)를 배포하지 않지만, GitLab 파이프라인에서 Terraform을 여전히 사용할 수 있습니다.
자체 템플릿 및 이미지를 구축하고 호스팅하는 방법에 대한 내용은 Terraform Images 프로젝트를 참조하세요.
Terraform 템플릿 레시피
GitLab에서 작성한 템플릿 레시피는 Terraform 템플릿 레시피를 참조하세요.
관련 주제
- GitLab을 Terraform 모듈 레지스트리로 사용합니다.
- 상태 파일을 로컬 스토리지 또는 원격 스토어에 저장하려면 GitLab 관리 Terraform 상태를 사용합니다.
- Terraform 코드 변경 및 인프라스트럭처-코드 워크플로우에 협업하려면 병합 요청에서 Terraform 통합을 사용합니다.
- 사용자, 그룹 및 프로젝트와 같은 GitLab 리소스를 관리하려면 GitLab Terraform 공급자를 사용합니다. GitLab Terraform 공급자 문서는 Terraform 문서 사이트에서 확인할 수 있습니다.
- Amazon Elastic Kubernetes Service (EKS)에서 새 클러스터 만들기.
- Google Kubernetes Engine (GKE)에서 새 클러스터 만들기.
- GitLab과 Terraform 관련 문제를 문제 해결하십시오.
- gitlab-terraform 쉘 스크립트가 포함된 이미지를 확인하십시오.