주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
CI/CD 파이프라인을 사용하여 GitLab 저장소의 Terraform 코드를 OCI 테넌시에 연결
소개
Oracle Cloud Infrastructure(OCI) 또는 기타 클라우드에서 작업하는 동안 모든 곳에서 자동화에 대한 명확한 지침이 필요하며, 가장 중요한 자동화 중 하나는 인프라 프로비저닝입니다.
사용자는 Terraform을 사용하여 클라우드 인프라를 프로비저닝하고, 일부 코드가 포함된 경우 코드 저장소에서 Agile 개발 관행을 사용하여 관리하고 완전한 DevOps 방식으로 관리하기를 원합니다. 저장소가 초기 코드로 설정되면 모든 개발자가 새 코드를 제출하고 CI/CD(지속적 통합 및 지속적 제공/배포) 파이프라인에서 트리거된 새 인프라를 배포할 수 있습니다.
이 자습서에서는 민첩한 개발 방식으로 Terraform 자동화 관리형 인프라 파이프라인을 구성하고 GitLab을 저장소 제공자로 사용하는 데 필요한 모든 단계를 이해합니다. GitHub 및 Azure DevOps와 같은 다른 공급자에게도 동일한 프로세스가 적용됩니다.
목표
-
Agile 개발 관행을 사용하여 Terraform 자동화 관리형 인프라 파이프라인을 구성합니다.
-
GitLab 에이전트가 OCI 테넌시에 접속할 사용자에 대한 API 키를 설정합니다.
-
모든 Terraform 코드가 푸시될 GitLab 저장소와 OCI 테넌시 세부정보를 가져올 초기 Terraform 코드를 설정합니다.
-
새 코드가 저장소에 푸시되고 승인되는 즉시 Terraform 작업을 트리거할 YAML 기반 CI/CD 파이프라인을 설정합니다.
필요 조건
-
OCI에 대한 액세스 및 Oracle Cloud Infrastructure Identity and Access Management(OCI IAM)에서 허용되는 정책에 필요합니다. 사용자는 Terraform 코드를 사용하여 생성하거나 업데이트하려는 해당 리소스에 액세스할 수 있어야 합니다.
-
GitLab에 액세스하여 저장소, 후속 파이프라인 및 코드 푸시를 생성합니다.
-
소프트웨어 개발의 민첩한 방법론에 대한 기본적인 이해
작업 1: API 키 설정
-
서비스 계정 또는 관리 사용자를 사용하여 OCI 테넌시에 로그인하고 사용자 설정으로 이동합니다.
또는
OCI IAM 콘솔에서도 해당 사용자로 이동할 수 있습니다. 이 사용자에게 OCI에서 인프라를 생성하거나 업데이트하는 데 필요한 모든 액세스 권한이 있는지 확인하십시오.
-
사용자의 리소스 섹션으로 이동하여 API 키 및 API 키 추가를 누릅니다. 여기서는 새 공개 및 개인 키를 다운로드하거나 공개 키를 업로드하거나 공개 키를 붙여 넣을 수 있습니다.
-
옵션 중 하나를 선택한 후 다음 그림과 같이 키를 편리한 위치에 저장하고 구성 파일을 저장합니다. Terraform을 사용하여 테넌시에 연결할 때 이 구성 파일과 전용 키가 필요합니다.
작업 2: Terraform 코드로 GitLab 저장소 설정
-
GitLab에 저장소를 생성합니다. 이 저장소를 사용하여 Terraform 코드를 푸시합니다.
-
테넌시 접속에 필요한 Terraform 코드를 개발합니다. 이 자습서에서는 Terraform 코드를 사용하여 테넌시에 연결하고 가용성 도메인에 대한 세부정보를 가져옵니다.
-
provider.tf
.provider "oci" { tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region } terraform { required_providers { oci = { version = ">= 3.0.0" } } }
-
variables.tf
.variable "tenancy_ocid" { type = string default = "ocid1.tenancy.oc1..aaaaaaaacko" } variable "user_ocid" { type = string default = "ocid1.user.oc1..aaaaaaaafelq" } variable "fingerprint" { type = string default = "72:d4:6c:f8:89" } variable "private_key_path" { type = string default = "oracleidentitycloudservice_user_key.pem" } variable "region" { type = string default = "us-ashburn-1" }
-
oracleidentitycloudservice_user_key.pem
.content of your private key
-
availability-domains.tf
.data "oci_identity_availability_domains" "ads" { #Required compartment_id = var.tenancy_ocid }
-
outputs.tf
.# The "name" of the availability domain to be used for the compute instance. output "name-of-first-availability-domains" { value = data.oci_identity_availability_domains.ads.availability_domains[0].name }
주: 저장된 구성 파일의 값을 사용하여
variables.tf
파일에 매개변수 값을 입력합니다. -
작업 3: 코드 병합을 기반으로 YAML 기반 CI/CD 파이프라인 및 트리거 설정
-
Terraform 코드를 GitLab 저장소로 푸시한 후 파이프라인을 생성하고
yaml
파일을 사용하여 구성해 보겠습니다. -
저장소에
.gitlab-ci.yml
파일을 만들고 다음 코드를 추가합니다.build-job: stage: build script: - echo "Hello Gitlab" - uname -r - yum install -y yum-utils - yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo - sed -i 's/$releasever/7/g' /etc/yum.repos.d/hashicorp.repo - yum -y install terraform - pwd - ls -ltra - terraform init - terraform plan - terraform apply -auto-approve test-job1: stage: test script: - echo "This job tests something" test-job2: stage: test script: - echo "This job tests something, but takes more time than test-job1." - echo "After the echo commands complete, it runs the sleep command for 20 seconds" - echo "which simulates a test that runs 20 seconds longer than test-job1" - sleep 5 deploy-prod: stage: deploy script: - echo "This job deploys something from the main branch." environment: dev
참고:
- 모든 Terraform 명령
init
,plan
및apply
는 빌드 단계에서 실행되지만 필요한 단계에서 이에 따라 사용할 수 있습니다. - 이 데모
yml
파일은 Oracle Linux 7을 실행하는 GitLab 에이전트를 기반으로 합니다. 에이전트 OS 및 네트워크 가용성을 기반으로 Terraform 모듈의 가용성을 확인합니다.
- 모든 Terraform 명령
관련 링크
확인
- 작성자 - Lovelesh Saxena(주요 소프트웨어 엔지니어링 설계자)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Connect Terraform Code from a GitLab Repository to an OCI Tenancy using a CI/CD Pipeline
F94450-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.