주:

CI/CD 파이프라인을 사용하여 GitLab 저장소의 Terraform 코드를 OCI 테넌시에 연결

소개

Oracle Cloud Infrastructure(OCI) 또는 기타 클라우드에서 작업하는 동안 모든 곳에서 자동화에 대한 명확한 지침이 필요하며, 가장 중요한 자동화 중 하나는 인프라 프로비저닝입니다.

사용자는 Terraform을 사용하여 클라우드 인프라를 프로비저닝하고, 일부 코드가 포함된 경우 코드 저장소에서 Agile 개발 관행을 사용하여 관리하고 완전한 DevOps 방식으로 관리하기를 원합니다. 저장소가 초기 코드로 설정되면 모든 개발자가 새 코드를 제출하고 CI/CD(지속적 통합 및 지속적 제공/배포) 파이프라인에서 트리거된 새 인프라를 배포할 수 있습니다.

이 자습서에서는 민첩한 개발 방식으로 Terraform 자동화 관리형 인프라 파이프라인을 구성하고 GitLab을 저장소 제공자로 사용하는 데 필요한 모든 단계를 이해합니다. GitHub 및 Azure DevOps와 같은 다른 공급자에게도 동일한 프로세스가 적용됩니다.

목표

필요 조건

작업 1: API 키 설정

  1. 서비스 계정 또는 관리 사용자를 사용하여 OCI 테넌시에 로그인하고 사용자 설정으로 이동합니다.

    사용자 설정 열기

    또는

    OCI IAM 콘솔에서도 해당 사용자로 이동할 수 있습니다. 이 사용자에게 OCI에서 인프라를 생성하거나 업데이트하는 데 필요한 모든 액세스 권한이 있는지 확인하십시오.

  2. 사용자의 리소스 섹션으로 이동하여 API 키API 키 추가를 누릅니다. 여기서는 새 공개 및 개인 키를 다운로드하거나 공개 키를 업로드하거나 공개 키를 붙여 넣을 수 있습니다.

    API 키 추가

  3. 옵션 중 하나를 선택한 후 다음 그림과 같이 키를 편리한 위치에 저장하고 구성 파일을 저장합니다. Terraform을 사용하여 테넌시에 연결할 때 이 구성 파일과 전용 키가 필요합니다.

    구성 파일 저장

작업 2: Terraform 코드로 GitLab 저장소 설정

  1. GitLab에 저장소를 생성합니다. 이 저장소를 사용하여 Terraform 코드를 푸시합니다.

    GitLab 저장소

  2. 테넌시 접속에 필요한 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 파이프라인 및 트리거 설정

  1. Terraform 코드를 GitLab 저장소로 푸시한 후 파이프라인을 생성하고 yaml 파일을 사용하여 구성해 보겠습니다.

    GitLab 환매조건부채권 CICD

  2. 저장소에 .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, planapply는 빌드 단계에서 실행되지만 필요한 단계에서 이에 따라 사용할 수 있습니다.
    • 이 데모 yml 파일은 Oracle Linux 7을 실행하는 GitLab 에이전트를 기반으로 합니다. 에이전트 OS 및 네트워크 가용성을 기반으로 Terraform 모듈의 가용성을 확인합니다.

확인

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하십시오. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.