Terraform을 사용하여 CI 도구 체인 설정하기

이 튜토리얼을 통해 코드형 인프라( DevSecOps )의 지속적 통합(CI)을 위한 도구 체인 템플릿을 사용할 수 있습니다( IaC ) Terraform. 인벤토리 통합, Git Repos and Issue Tracking 을 통한 변경 관리, 증거 수집, 인프라를 IBM Cloud 으로 배포하는 지속적 배포(CD)를 위해 사전 구성되어 있습니다.

시작하기 전에

이 튜토리얼을 시작하기 전에 다음 단계를 완료하세요.

  1. 전제 조건 설정하기 완료. 자세한 내용은 IaC에 대한 CI의 중요성 을 참조하세요.
  2. 다음 동영상을 확인하세요:

CI 도구 체인 설정 시작

Continuous Delivery 서비스는 툴체인 설정을 안내하고 논리적인 순서로 프로세스를 생성할 수 있는 템플릿을 제공합니다. 진행 표시기는 구성을 완료하기 위한 단계를 표시합니다. 단계에 따라 CI 툴체인용 템플릿에 액세스합니다.

  1. IBM Cloud 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 플랫폼 자동화 > 툴체인을 클릭합니다.
  2. 도구 체인 페이지에서 도구 체인 작성을 클릭하십시오.
  3. 인프라를 코드로 확인합니다.
  4. CI - 보안 인프라를 코드로 개발하기 - DevSecOps 사례 타일을 클릭합니다.

CI 툴체인 설정 설정

환영 페이지에는 문서 및 관련 자료에 대한 안내와 함께 툴체인의 목적이 요약되어 있습니다.

  1. 시작을 클릭하십시오.

  2. 툴체인 내에 동일한 지역 및 리소스 그룹에 대한 툴체인 이름를 IBM Cloud에 입력합니다.

  3. 드롭다운 목록에서 지역을 선택합니다.

  4. 드롭다운 목록에서 리소스 그룹을 선택합니다.

  5. 계속을 클릭합니다.

    현재 단계의 구성이 완료되어 유효한 경우에만 다음 단계로 진행할 수 있습니다. 언제든지 뒤로하기를 클릭하여 안내된 설치 관리자에서 이전 단계를 볼 수 있습니다. 도구 체인 설치 프로그램은 연속적인 단계의 모든 구성 설정을 유지합니다.

    일부 단계에는 고급 구성으로 전환 토글 버튼이 포함되어 있습니다. 이 단계에서는 기본적으로 최소한의 구성이 제공됩니다. 그러나 보다 세밀한 제어가 필요한 고급 사용자는 고급 구성으로 전환 토글을 클릭하여 기본 통합 옵션을 표시할 수 있습니다.

CI 도구 통합 설정

기본 설정을 검토하고 CI 도구 통합을 설정하는 데 필요한 경우 사용자 정의 구성을 제공하세요. 설정하는 동안 여러 리포지토리를 구성할 수 있습니다. 샘플 저장소를 복제하거나 사용자 자신의 저장소를 사용할 수 있지만 도구 체인은 Git Repos and Issue Tracking 저장소만 지원합니다.

인프라 코드

인프라 코드 저장소는 CI 툴체인 및 파이프라인이 대상 아티팩트를 빌드, 테스트 및 제공하는 프로젝트 또는 모듈입니다. 인프라 코드 리포지토리는 GitHub Enterprise에서 호스팅됩니다. 일관성을 위해 이 학습서는 Git Repos and Issue Tracking를 참조합니다.

인프라 코드의 기본 정보를 검토합니다:

  1. 수락 기본 샘플 사용. 툴체인에 기존 IaC 리포지토리를 연결하려면 자체 인프라 코드 가져오기를 선택하고 리포지토리 URL 필드에 입력값으로 입력합니다. 현재 툴체인은 기존 Git Repos and Issue Tracking 리포지토리에만 연결할 수 있습니다. 자세한 내용은 DevSecOps 에 자신의 인프라 코드를 가져오기에서 확인하실 수 있습니다.
  2. 새 리포지토리 이름의 이름을 입력합니다.
  3. 계속을 클릭합니다.

인벤토리

인벤토리 리포지토리에는 CI 툴체인에서 생성된 아티팩트의 세부 정보가 기록됩니다.

  1. 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
  2. 계속을 클릭합니다.

문제

문제 저장소는 CI 파이프라인이 실행 중인 동안 발견된 문제를 기록합니다.

  1. 템플릿에 제공된 기본 구성을 수락할 수 있습니다.
  2. 계속을 클릭합니다

시크릿

토글을 사용하여 도구 체인에 추가할 비밀 저장소 통합을 지정하는 방법은 IBM Cloud 비밀 관리 에 설명된 대로 하세요.

  1. 이 학습서에서는 IBM Cloud® Secrets Manager 을 시크릿의 저장소로 사용합니다. 지역, 자원 그룹서비스 이름 필드는 사용 가능한 선택사항에 따라 자동으로 채워집니다. 다른 선택사항을 보려면 드롭 다운 표시기를 클릭하십시오.
  2. Secrets Manager 인스턴스 이름을 입력합니다.
  3. 드롭다운 목록에서 권한 부여 유형을 선택합니다.
  4. 계속을 클릭합니다.

증거 스토리지

증거 보관함에는 DevSecOps CI 파이프라인에서 생성된 모든 증거와 아티팩트가 저장됩니다.

  1. 다음 페이지에서 구성할 수 있는 모든 증거를 IBM Cloud Object Storage 버킷 슬라이더에 저장하려면 IBM Cloud Object Storage 버킷 슬라이더를 토글합니다.
  2. 기본 설정값을 채택하십시오.
  3. 계속을 클릭합니다.

클라우드 Object Storage 버킷

IBM Cloud Object Storage 인스턴스와 규정 준수 증거 보관소 역할을 수행할 버킷이 있어야 합니다.

  1. Cloud Object Storage 인스턴스, 버킷 이름Cloud Object Storage 엔드포인트 필드가 자동으로 채워집니다.
  2. 서비스 ID API 키를 입력합니다.
    • 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
    • 기존 키를 복사하여 붙여넣을 수 있습니다.
  3. 계속을 클릭합니다.

엔드포인트 필드는 필수가 아닙니다. 툴체인을 설정하는 동안 또는 파이프라인을 실행하는 동안 엔드포인트를 선택하거나 제공할 수 있습니다.

배치

테라폼 상태가 유지되는 대상 Schematics 작업 공간을 구성합니다. 워크스페이스 이름이 제공되지 않으면 툴체인은 ToolchainName-ToolchainId-PipelineID 을 사용하여 기본 Schematics 워크스페이스를 생성합니다.

  1. IBM Cloud API 키를 입력합니다. API 키에 충분한 액세스 권한이 있는 경우. Schematics 작업 영역, Git 리포지토리리소스 그룹 세부 정보가 자동으로 채워집니다. 이러한 필드를 구성에 맞게 변경할 수 있습니다.

    • 선호: 키 아이콘을 클릭하여 비밀 보관함에서 기존 키를 가져올 수 있습니다.
    • 기존 키를 복사하여 붙여넣을 수 있습니다.
    • 여기에서 새로 만들기 +를 클릭하여 새 키를 만들 수 있습니다.

    새로 생성된 API 키는 즉시 비밀 보관소에 저장할 수 있습니다.

  2. 스키매틱 워크스페이스 이름를 입력합니다.

  3. 계속을 클릭합니다.

서명

툴체인에서 생성되어 인벤토리에 기록되는 아티팩트는 프로덕션에 배포하기 전에 서명을 받아야 합니다.

  1. GnuPG 개인키를 입력합니다. 또는 NEW 를 클릭하여 새 GPG 키를 만들 수도 있습니다. 자세한 내용은 GPG 키 생성하기 를 참조하세요.
  2. 계속을 클릭합니다.

선택적 도구

Slack

풀 리퀘스트 또는 CI 파이프라인 이벤트에 대한 알림을 받도록 Slack 를 구성하세요. 툴체인 생성 후 Slack 도구를 추가할 수도 있습니다.

  1. Slack 웹훅을 입력합니다. 자세한 내용은 Slack 웹훅 를 참조하세요.
  2. 메시지를 게시할 슬랙 채널를 입력합니다.
  3. 슬랙 팀 이름를 입력합니다. 예를 들어 URL 팀이 https://team.slack.com 인 경우 팀 이름은 team 입니다.
  4. 알림을 받고자 하는 이벤트에 대해 자동화된 Slack 알림를 선택합니다.
  5. 계속을 클릭합니다.

원하는 경우 slack-notifications 환경 속성을 사용하여 CD 파이프라인에서 0 = off, and 1 = on 를 사용하여 알림 전송을 전환할 수 있습니다.

CI 도구 체인 작성

  1. 요약 페이지에서 도구 체인 작성을 클릭하십시오.

  2. 툴체인 생성을 기다립니다.

    다른 툴체인 통합은 파이프라인이 생성된 후에 구성할 수 있습니다.

CI 도구 체인 탐색

CI 툴체인에는 pr-pipelineci-pipeline 가 포함되어 있습니다. 이러한 파이프라인은 새로운 병합 요청이 제출되거나 인프라 코드 리포지토리의 메인 브랜치에 병합될 때 트리거됩니다.

도구 체인에 액세스하려면 다음 단계를 따르세요:

  1. IBM Cloud 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 플랫폼 자동화 > 툴체인을 클릭합니다.

  2. 도구 체인 페이지에서 도구 체인 작성을 클릭하십시오.

  3. 툴체인을 클릭하면 화면 캡처와 같이 출력을 확인할 수 있습니다.

    이 튜토리얼에서 사용되는 샘플은 Key Protect 인스턴스를 생성하기 위해 resource_group 를 기대합니다. 기본 resource_group 이름은 Default 입니다. 기본값이 계정에 적합하지 않은 경우 resource_group 파일에서 기본 variables.tf 변수를 변경하세요. 그렇지 않으면 PR 파이프라인 및 CI 파이프라인에서 TF_VAR_resource_group 환경 속성을 적절한 리소스 그룹 이름으로 설정하여 resource_group 변수를 지정합니다.

    DevSecOps IaC CI 툴체인
    DevSecOps CI 툴체인

pr 파이프라인 실행

pr-pipeline 를 시작하려면 애플리케이션 리포지토리에서 병합 요청을 생성합니다:

  1. CI 툴체인 페이지에서 애플리케이션 리포지토리 타일을 클릭합니다. 기본적으로 compliance-app-<timestamp> 라는 이름으로 생성됩니다.

  2. 기본 분기에서 분기를 작성하십시오.

  3. 애플리케이션의 일부 코드를 업데이트하거나 readme 파일을 추가하고 변경 사항을 저장합니다.

  4. 병합 요청을 제출합니다.

  5. CI 툴체인 페이지에서 홍보 파이프라인 타일을 클릭합니다. 병합 요청을 생성하여 PR 파이프라인이 트리거되었는지 확인합니다.

  6. pr-pipeline 실행이 완료될 때까지 기다립니다. 애플리케이션 리포지토리에 있는 해당 병합 요청은 PR 파이프라인의 모든 단계가 성공적으로 완료될 때까지 Pending 상태입니다.

  7. PR 파이프라인 실행이 성공적으로 완료되면 파이프라인을 클릭하여 완료된 여러 단계를 탐색하고 화면 캡처에 표시된 것처럼 페이지를 볼 수 있습니다.

    DevSecOps IaC PR 파이프라인 성공
    DevSecOps PR 파이프라인 성공

  8. 병합 요청으로 다시 이동합니다.

  9. 변경 사항이 애플리케이션 리포지토리의 메인 브랜치에 복사되도록 요청을 병합합니다. CI 파이프라인이 자동으로 트리거되는지 확인하세요.

CD 파이프라인 실행

다음 방법 중 하나로 CI 파이프라인을 시작하십시오.

  • 자동으로: PR 파이프라인이 성공적으로 완료된 후 PR을 승인하고 메인 브랜치에 병합합니다.
  • 수동: CI 파이프라인을 수동으로 트리거하려면 Delivery Pipeline 카드를 선택하고 파이프라인 실행을 클릭한 다음 수동 트리거를 선택합니다.

이 자습서에서는 코드 변경 사항을 애플리케이션 리포지토리의 마스터 브랜치에 병합한 후 CI 파이프라인이 트리거되었습니다.

  1. CI 툴체인 페이지에서 CI 파이프라인 타일을 클릭합니다.

  2. 파이프라인 이름에 대해 실행를 클릭합니다. 파이프라인 실행이 실행 중인지 확인합니다. 파이프라인 실행이 완료될 때까지 기다립니다.

  3. CI 파이프라인 실행이 성공적으로 완료되면 파이프라인을 클릭하여 완료된 단계를 탐색하여 화면 캡처와 같이 페이지를 확인합니다.

    DevSecOps IaC CI 파이프라인 성공
    DevSecOps CI 파이프라인

CI 파이프라인의 모든 규정 준수 검사 증거는 증거 보관함 리포지토리에 업로드될 뿐만 아니라 IBM Cloud Object Storage 버킷에도 업로드됩니다.

파이프라인 실행에 실패가 있는지 평가하려면 파이프라인의 마지막 단계를 확인하세요.

파이프라인 사용자 정의

파이프라인 사용자 지정에 대한 자세한 내용은 사용자는 파이프라인을 어떻게 사용자 지정하나요 를 참조하세요

다음 단계

Terraform용 DevSecOps CI 도구 체인을 성공적으로 생성하고 인프라 코드 저장소에서 코드를 편집하고 ci-pipeline 을 실행하여 변경 사항을 빌드, 테스트 및 개발 환경에 배포했습니다.

이제 테라폼용 CD 툴체인 설정하기 로 이동합니다.