Continuous Delivery에 대한 Terraform 설정

Continuous Delivery 2027년 2월 12일부로 다음 지역에서 서비스가 중단될 예정입니다: au-syd, ca-tor, us-east. 또한 해당 날짜를 기점으로 Code Risk Analyzer는 모든 지역에서 서비스가 중단될 예정입니다. 특정 지역에서 해당 기능을 실제로 사용하지 않는 경우, 해당 지역의 기능은 예정보다 일찍 중단될 수 있으며 새로운 인스턴스 등록이 더 이상 허용되지 않을 수 있습니다. 자세히 알아보기

IBM Cloud® 의 Terraform을 사용하면 IBM Cloud 서비스를 예측 가능하고 일관성 있게 생성할 수 있으므로, ‘인프라스트럭처 애즈 코드(Infrastructure as Code, IaC )’ 원칙에 따라 복잡한 다계층 클라우드 환경을 신속하게 구축할 수 있습니다. IBM Cloud CLI나 API 및 SDK를 사용하는 것과 마찬가지로, HashiCorp 구성 언어(HCL)를 사용하여 IBM Cloud® Continuous Delivery 인스턴스의 생성, 업데이트 및 삭제를 자동화할 수 있습니다.

관리되는 Terraform on IBM Cloud® 솔루션을 찾고 있습니까? IBM Cloud® Schematics을 사용해 보십시오. Schematics 를 사용하면 Terraform 명령줄과 IBM Cloud® Provider 플러그인의 설정 및 유지 관리에 대한 걱정 없이, 익숙한 Terraform 스크립팅 언어를 사용할 수 있습니다. 또한 Schematics 는 IBM Cloud® 카탈로그에서 쉽게 설치할 수 있는 미리 정의된 Terraform 템플릿을 제공합니다.

Terraform 설치 및 Continuous Delivery에 대한 리소스 구성

시작하기 전에 continuous-delivery 리소스를 작성하고 이에 대해 작업하기 위한 필수 액세스toolchain 리소스를 작성하고 이에 대해 작업하기 위한 필수 액세스 가 있는지 확인하십시오.

  1. Terraform on IBM Cloud 시작하기 튜토리얼에 따라 Terraform CLI를 설치하고 Terraform용 IBM Cloud 제공자 플러그인을 구성하십시오. 이 플러그인은 continuous-delivery 서비스 인스턴스와 toolchain 리소스를 생성, 업데이트 또는 삭제하는 데 사용되는 IBM Cloud API를 추상화합니다.

  2. 이름이 main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서 HCL을 사용하여 ‘ Continuous Delivery ’ 서비스 인스턴스를 생성하고, Identity and Access Management (IAM)에서 해당 인스턴스에 대한 액세스 정책을 사용자에게 할당하는 구성을 추가하십시오. 또한 Continuous Delivery 서비스 인스턴스와 동일한 리소스 그룹 및 지역에서 기본 도구 체인 리소스를 작성하고 해당 리소스에 대해 IAM에서 사용자에게 액세스 정책을 지정하도록 구성을 추가합니다. 도구 체인의 사용을 제어하는 도구 체인 및 Continuous Delivery 서비스 인스턴스는 동일한 리소스 그룹 및 지역에 있습니다. Terraform 구성 파일 작업에 대한 자세한 정보는 Terraform 문서를 참조하십시오.

    다음 예에서 Continuous Delivery 서비스 인스턴스의 이름은 my_cd 입니다. 이는 default 리소스 그룹 및 us-south 지역에서 전문 가격 플랜을 사용하여 작성됩니다. user1@ibm.com 사용자에게는 서비스 인스턴스에 대한 IAM 액세스 정책의 관리자 역할이 지정됩니다.

    도구 체인 리소스의 이름은 my_toolchain 입니다. default 자원 그룹 및 provider.tf 파일의 provider "ibm" 블록에 지정된 리젼에서 작성됩니다. 이 예제의 경우 provider.tfregionus-south 로 설정됩니다. user2@ibm.com 사용자에게는 도구 체인 리소스에 대한 IAM 액세스 정책의 편집자 역할이 지정됩니다.

    data "ibm_resource_group" "default_rg" {
      name = "default"
    }
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    resource "ibm_iam_user_policy" "cd_policy" {
      ibm_id = "user1@ibm.com"
      roles  = ["Manager"]
      resources {
        service              = "continuous-delivery"
        resource_instance_id = element(split(":", ibm_resource_instance.cd_instance.id), 7)
      }
    }
    resource "ibm_cd_toolchain" "toolchain_instance" {
      name              = "my_toolchain"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    resource "ibm_iam_user_policy" "toolchain_policy" {
      ibm_id = "user2@ibm.com"
      roles  = ["Editor"]
      resources {
        service              = "toolchain"
        resource_instance_id = ibm_cd_toolchain.toolchain_instance.id
      }
    }
    
  3. Terraform CLI를 초기화하십시오.

    terraform init
    
  4. Terraform 실행 플랜을 작성하십시오. Terraform 실행 플랜은 계정에서 Continuous Delivery 서비스 인스턴스, 도구 체인 리소스 및 연관된 IAM 액세스 정책을 작성하기 위해 실행해야 하는 모든 조치를 요약합니다.

    terraform plan
    
  5. IBM Cloud의 계정에서 Continuous Delivery 서비스 인스턴스, 도구 체인 리소스 및 연관된 IAM 액세스 정책을 작성하십시오.

    terraform apply
    
  6. IBM Cloud 리소스 목록에서 개발자 도구 섹션을 펼친 후 작성한 Continuous Delivery 서비스 인스턴스를 선택하고 인스턴스 ID를 기록하십시오.

  7. 액세스 정책이 정상적으로 지정되었는지 확인하십시오. 액세스 정책 지정에 대한 자세한 정보는 콘솔에서 지정된 액세스 검토 를 참조하십시오.

  8. IBM Cloud 리소스 목록에서 개발자 도구 섹션을 펼친 후 작성한 도구 체인 리소스를 선택하고 인스턴스 ID를 기록하십시오.

  9. 액세스 정책이 정상적으로 지정되었는지 확인하십시오.

Terraform으로 Continuous Delivery 서비스 인스턴스에 플랫폼 로그 활성화하기

Continuous Delivery 서비스는 Tekton PipelineRun 로그를 플랫폼 로그로 전송하는 기능을 지원합니다. 이렇게 하면 현재 지역 및 리소스 그룹에 대한 모든 Tekton PipelineRun 로그를 계정으로 수신할 수 있으며, 수신한 로그를 IBM Cloud Logs 과 같은 대상으로 전달하도록 계정을 구성할 수 있습니다.

  1. Terraform 구성 파일에서 true 값의 platform_logging_pipelineruns_enabled 매개 변수를 포함하도록 구성을 조정합니다.

    data "ibm_resource_group" "group" {
      name = "default"
    }
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
      parameters = {
        platform_logging_pipelineruns_enabled = "true"
      }
    }
    

다음에 수행할 작업

IBM Cloud 에서 Terraform을 사용하여 첫 번째 Continuous Delivery 서비스 인스턴스와 툴체인 리소스를 성공적으로 생성했으므로, 이제 다음 작업 중 하나를 선택할 수 있습니다:

IBM Cloud 제공자 리소스 및 데이터 소스에 대한 자세한 정보는 Terraform 레지스트리 문서를 참조하십시오.