IBM Cloud Docs
코드로 인프라를 위한 지속적인 통합 파이프라인

코드로 인프라를 위한 지속적인 통합 파이프라인

Infrastructure as Code (IaC) 에 대한 지속적인 통합 파이프라인은 IaC 저장소 (Terraform 컨텐츠) 에서 배치 가능한 구성을 빌드합니다.

아티팩트를 빌드하기 전에 파이프라인은 가져오기 요청을 처리하는 방법과 동일한 방법으로 코드가 스캔되고 테스트되는지 확인합니다. 빌드된 아티팩트도 취약점을 검사하고 파이프라인에서 서명하여 인벤토리에서 릴리스 및 배포 준비가 완료된 것으로 표시합니다. 자세한 정보는 인벤토리 를 참조하십시오. 가져오기 요청 파이프라인과 달리, 지속적 통합 파이프라인은 빌드의 각 스테이지(예: 테스트, 스캔, 서명)에서 증거 및 결과 아티팩트를 수집합니다. 이 데이터는 빌드된 아티팩트와 관련되며 배치 프로세스 및 변경 관리를 통해 추적 가능합니다.

스테이지 및 태스크

IaC 단계 및 작업에 대한 지속적인 통합
태스크 또는 스테이지 간단한 설명 .pipeline-config.yaml에서 사용자 정의 가능
start 파이프라인 환경을 설정합니다. 아니오
setup 빌드 및 테스트 환경을 설정합니다.
test 구성 IaC에서 단위 테스트를 실행합니다.
static-scan IaC에서 정적 스캔 코드를 실행합니다.
compliance-checks 앱 리포지토리에 대한 코드 위험 분석기 검사 및 기타 규정 준수 검사를 실행합니다.
build-artifact 구성에 해당하는 아티팩트를 빌드합니다.
sign-artifact 빌드된 아티팩트에 서명합니다.
deploy 빌드된 아티팩트를 사용하여 개발 환경에 구성을 배치합니다.
acceptance-test 개발 환경에서 배포된 구성에 대한 수락 및 통합 테스트를 실행합니다.
release 빌드한 아티팩트를 인벤토리에 추가합니다.
finish 로그 파일, 아티팩트 및 증거를 수집, 생성 및 증거 보관함에 업로드합니다. 아니오

.pipeline-config.yaml 파일을 사용하여 스테이지를 사용자 지정하는 방법에 대한 자세한 내용은 사용자 지정 스크립트를 참조하세요. e) 및 파이프라인 매개변수 목록을 참조하십시오.

Terraform 컨텍스트 및 변수를 구성하기 위한 매개변수

infrastructure-as-code 소스를 정의하는 Terraform 정의의 경우, 표 1에 설명된 매개변수를 사용하여 Terraform및 Terraform 관련 스캔 및 검사와 관련된 컨텍스트 및 변수를 정의할 수 있습니다.

Terraform 컨텍스트 및 변수를 구성하기 위한 매개변수
특성 기본 설명
tf-dir . main.tf 가 있는 소스 저장소의 위치 또는 경로입니다.
TF_VAR_<XXXX> Terraform 변수 <XXXX> 에 대한 값을 제공하는 파이프라인 또는 트리거 특성 (보안 또는 비보안)
tfvars-repository 인프라 소스 코드 Git 저장소. tfavars 파일을 포함하는 Git 저장소. 저장소는 도구 체인에서 선언되어야 합니다.
tfvars-branch main tfvars 파일을 포함하는 Git 저장소의 분기입니다.
tfvars-files Terraform 변수 값을 포함하는 파일입니다.
terraform-version 1.2.9 stages.You 에서는 1.5.0-1과 같은 버전을 제공할 수도 있습니다. 다음은 [Terraform 버전 목록]입니다 (https://releases.hashicorp.com/terraform/).

IaC CD 배치 프로세스에서 사용되는 스크립트에도 동일한 매개변수가 적용됩니다. CD 프로세스가 여러 재고 항목을 처리할 수 있으므로 재고 항목에 대한 매개변수의 범위를 지정할 수 있습니다. 범위 (인벤토리 항목) 에 대한 Terraform 컨텍스트 및 변수를 지정하려면 특성에 인벤토리 항목 이름을 접두부로 지정하십시오 (예: <inventory_entry>_). 이 접두어는 환경 항목 tf-dir, TF_VAR_<XXXX>, tfvars-repository, tfvars-branchtfvars-files 에 적용됩니다.

예:

hello-iac-sample_TF_VAR_resource_group : Default

정적 코드 스캔

정적 코드 스캔 단계는 지정된 IaC 저장소에서 여러 정적 코드 분석기 도구를 실행합니다. pipelinectl save_repo 명령으로 제공되는 저장소 및 기본 앱 저장소가 스캔됩니다.

애플리케이션 관련 지속적 통합 파이프라인에 대해 구성 가능한 정적 코드 스캔 에 대해 정의된 메소드 중 하나를 사용할 수 있습니다.

IaC 연속 통합 파이프라인은 표 2의 opt-in-* 매개변수를 1 로 설정하여 사용으로 설정되는 추가 도구를 정의합니다.

스캔 또는 검사 설명 인에이블먼트
트플린트 실행 tflint $tflint_args --format=json tflint 에서 더 이상 사용되지 않는 구문과 선언에 대해 경고하고 모범 사례와 명명 규칙을 적용합니다. opt-in-tflint 1로 설정
fmt 실행 terraform fmt -check fmt 에서 Terraform 구성 파일을 표준 형식과 스타일로 다시 작성합니다. opt-in-terraform-fmtvalidate 1로 설정
테라폼 검증 실행 ibmcloud cra terraform-validate IBM Cloud® Security and Compliance Center 에 지정된 규칙을 준수하기 위해 지정된 Terraform 계획 파일에 대해 경고하기 위해 terraform-validate 에서 opt-in-terraform-fmtvalidate 1로 설정
IaC 정적 스캔 도구 매개변수
이름 유형 기본값 설명 필수 또는 선택적
opt-in-terraform-fmt-validate text terraform fmtterraform validate 명령을 static-scan 단계에서 실행합니다. 선택적
opt-in-tflint text tflint 명령을 static-scan 단계에서 실행합니다. 선택적
tflint-version text v0.53.0 static-scan 단계 실행에 사용되는 이미지에 제공되지 않은 경우 설치할 tflint 버전을 표시합니다. 선택적
tflint-config text tflint 에 사용할 구성 파일입니다. 선택사항
tflint-args text 도구 호출 중에 tflint 에 전달되는 명령 인수입니다. 선택적

규제 준수 검사에서 스캔 및 검사

애플리케이션 관련 연속 통합 파이프라인에 대해 정의된 준수 검사 도 IaC 연속 통합 파이프라인에 대해 수행됩니다.

IaC CI 파이프라인은 opt-in- 기능을 사용하여 사용으로 설정된 일부 추가 검사를 수행합니다.

IaC CI 파이프라인은 1 로 설정된 opt-in- 매개변수를 사용하여 사용으로 설정되는 추가 도구를 정의합니다.

IaC 추가 규정 준수 스캔 및 확인
스캔 또는 검사 설명 인에이블먼트
cra-tf IBM Cloud CRA 도구 에서 ibmcloud cra terraform-validate 명령을 사용하여 Terraform 플랜의 준수를 분석하십시오. opt-in-cra-tf-validate1 로 설정되었습니다.
tfsec TFsec 도구를 사용하여 잠재적인 잘못된 구성을 찾고 준수 문제를 작성하십시오. opt-in-tfsec set to 1
checkov Checkov 도구를 사용하여 잘못된 구성을 찾고 준수 문제를 작성하십시오. opt-in-checkov set to 1
IaC 규정 준수 스캔 및 구성 매개변수 확인
특성 기본 설명
opt-in-cra-tf-validate ibmcloud cra terraform-validate 도구를 사용하여 준수 검사를 실행하는 플래그입니다.
cra-tf-policy-file 정책 프로필 파일의 경로입니다. 자세한 정보는 Terraform 명령 옵션 을 참조하십시오.
cra-tf-scc-instance-name 도구 체인에 구성된 Security and Compliance Center 도구 통합의 기본값 cra terraform validate 명령을 구성하기 위해 프로파일 및 첨부를 페치하는 데 사용되는 Security and Compliance Center 도구 통합 이름입니다.
cra-tf-ignore-rules ibmcloud cra terraform-validate 보고서에서 무시할 쉼표로 구분된 규칙 목록입니다.
cra-tf-ignore-rules-file ibmcloud cra terraform-validate 보고서에서 무시할 규칙 목록이 포함된 JSON 파일의 경로입니다. 파일 형식에 대한 자세한 정보는 cra-tf-ignore-rules-file의 형식 을 참조하십시오.
opt-in-tfsec tfsec 도구를 사용하여 준수 검사를 실행하는 플래그입니다.
tfsec-version 사용할 `v1.21.0`` The tfsec 버전입니다.
tfsec-args tfsec 명령 인수입니다.
opt-in-checkov checkov 도구를 사용하여 준수 검사를 실행하는 플래그입니다.
checkov-version '는 최신 버전을 의미합니다 checkov 버전을 사용할 수 없는 경우 설치할 수 있습니다.
checkov-args checkov 명령 인수입니다.

이러한 스크립트는 파이프라인이 인식하는 모든 리포지토리에서 실행됩니다. 이러한 스캔에 리포지토리를 추가하려면 설정 단계에서 제공되는 pipelinectl 인터페이스를 사용하세요. 자세한 정보는 pipelinectl의 내용을 참조하십시오.

사용자 스크립트 스테이지의 예상 출력에 관한 자세한 정보는 사용자 정의 스크립트를 참조하십시오.

cra-tf-ignore-rules-file 의 형식

cra-tf-ignore-rules-file format 에 의해 정의되는 파일의 예상 형식입니다. 형식은 terraform-validate 명령에 대한 SCC V2 클래식 프로파일 파일 예제 에 있는 형식 ( scc_parameters 필드가 없음) 과 유사합니다.

cra-tf-ignore-rules-file 파일의 샘플 컨텐츠:

{
    "scc_rules": [
        {
            "scc_rule_id": "rule-8cbd597c-7471-42bd-9c88-36b2696456e9"
        },
        {
            "scc_rule_id": "rule-c97259ee-336d-4c5f-b436-1868107a9558"
        }
    ]
}

아티팩트 빌드

아티팩트 제작 단계에서는 나만의 아티팩트를 제작할 수 있습니다. IaC CI 파이프라인의 경우 기본 빌드 기능은 Terraform 구성을 포함하는 Tar 파일을 작성합니다.

기본 빌드 기능은 표 5의 특정 매개변수를 사용하여 구성할 수 있습니다.

아티팩트 구성 매개변수 빌드
특성 기본 설명
configuration-name Git 저장소 이름의 "humanish" 파트입니다. IaC 구성의 이름입니다. IaC CI 파이프라인에서 빌드되는 아티팩트 파일 이름 및 인벤토리 항목에 사용됩니다.
build-ignore-file 무시 목록 파일의 경로 ( tar --exclude-from 에 사용됨)

사용자 정의 스크립트 스테이지의 매개변수 및 시크릿에 액세스하는 방법에 관한 자세한 정보는 사용자 정의 스크립트를 참조하십시오.

아티팩트 부호

아티팩트 서명 단계에서는 GPG키를 사용하여 하나 이상의 아티팩트에 대해 분리된 서명 파일을 작성하는 기본 동작을 제공합니다.

아티팩트 GPG 키 빌드
특성 설명
signing-key 하나 이상의 아티팩트의 분리된 서명의 ascii 버전에 사용되는 GPG 개인 키 값

다른 서명 프로세스를 사용하려면 프로젝트에서 .pipeline-config.yaml 구성을 사용하여 이 단계를 사용자 정의하십시오.

개발에 배치

배치 단계에서는 구성 아티팩트를 개발 환경에 배치합니다. 파이프라인 UI의 변수파이프라인 트리거 웹훅 페이로드에서 이 스테이지의 변수 및 인증 정보를 제공할 수 있습니다.

공통 기본 이미지의 일부로 제공되는 스크립트는 스키마 또는 Terraform CLI를 사용하여 배치를 수행하는 데 도움이 될 수 있습니다. 배치 조치에 대한 스크립트를 구성하기 위한 매개변수는 표 8및 표 9에 설명되어 있습니다.

Schematics 를 배치 도구로 사용하기 위한 구성 매개변수

Schematics 배포 도구로 사용하기 위한 구성 매개변수
특성 기본 설명
schematics-ibmcloud-api-key 스키마 관련 조치 (스키마 작업공간 검색/작성, 계획 및 적용) 에 사용되는 ibmcloud-api-key 를 겹쳐씁니다.
schematics-workspace-name <schematics-workspace-prefix><toolchain name>-<pipeline id> 존재하지 않는 경우 사용하거나 작성할 작업공간입니다. 작업공간이 있는 경우 Git 저장소에 대한 링크 없이 작성된 작업공간이어야 합니다. 자세한 정보는 Schematics 작업공간 작성 을 참조하십시오. 이 제한사항은 스크립트가 Schematics Workspace 업로드 를 사용하여 IaC 구성 아티팩트를 tar 파일로 업로드하기 때문입니다.
schematics-workspace-prefix 배치 조치에 대해 지정된 작업공간이 없는 경우 작업공간 작성에 사용되는 접두부입니다.
schematics-workspace-resource-group 도구 체인의 리소스 그룹으로 기본 설정됩니다. Schematics 작업공간 작성에 사용할 자원 그룹입니다.
schematics-workspace-region 도구 체인의 영역으로 기본 설정됩니다. 스키마 작업 공간 작성에 사용할 영역입니다.
schematics-workspace-netrc 알려진 저장소에서 계산됩니다. 작성할 스키마 작업 공간의 netrc 구성 값입니다. 자세한 정보는 개인용 원격 호스트에서 모듈 다운로드 지원 을 참조하십시오.
schematics-workspace-terraform-version ibmcloud schematics version --output JSON 를 사용하여 검색된 스키마 테라폼 버전으로 기본 설정됩니다. 스키마 작업 공간을 작성하는 데 사용되는 Terraform 버전입니다. Schematics 이미지 및 패키지된 Terraform 제공자의 개요 를 참조하십시오.

IaC CD 배치 프로세스에서 스크립트를 구성하려면 지정된 인벤토리 항목에 대해 범위가 지정된 매개변수를 정의하십시오. 지정된 범위 (자원 명세 항목) 에 대해 Schematics as deployment tool 관련 환경 특성을 지정하려면 자원 명세 항목 이름을 특성의 접두부로 사용하십시오 (예: <inventory_entry>_). 이 접두어는 모든 스키마 관련 환경 항목 ( schematics-ibmcloud-api-key 제외) 에 적용됩니다.

예:

hello-iac-sample_schematics-workspace-name : workspace-for-deployment-of-hello-iac-sample

Terraform CLI를 배치 도구로 사용하도록 구성

Terraform CLI를 배포 도구로 사용하기 위한 구성
특성 설명
tf-backend-s3-bucket 상태를 저장하는 버킷 이름입니다.
tf-backend-s3-key 상태를 지속하는 데 사용할 이름입니다.
tf-backend-s3-region Cloud Object Storage 인스턴스의 리전입니다.
tf-backend-s3-endpoint Cloud Object Storage 엔드포인트.
tf-backend-s3-access_key HMAC access_key 신임 정보의 하위죠,을 클릭하십시오.
tf-backend-s3-secret_key HMAC secret_key 신임 정보의 하위죠,을 클릭하십시오.

다음 내용을 참고하십시오.

  • Cloud Object Storage 엔드포인트 또는 버킷을 사용하여 Terraform 상태를 저장하는 방법에 대한 자세한 정보는 Cloud Object Storage에 Terraform 상태 저장을 참조하십시오.
  • IaC CD 배치 프로세스에서 스크립트를 구성하려면 인벤토리 항목에 대해 범위가 지정된 매개변수를 정의하십시오. 범위 (인벤토리 항목) 에 Terraform CLI as deployment tool 관련 환경 특성을 지정하려면 인벤토리 항목 이름을 특성의 접두부로 사용하십시오 (예: <inventory_entry>_). 이 접두어는 모든 스키마 관련 환경 항목에 적용됩니다.

예:

hello-iac-sample_tf-backend-s3-bucket : bucket-to-store-tfstate-of-hello-iac-sample

인벤토리로 릴리스

인벤토리 사용자 스크립트 스테이지에 대한 릴리스를 사용하여 cocoa inventory add CLI 명령으로 인벤토리에 아티팩트를 추가하십시오. cocoa inventory add 에 대한 자세한 정보는 코코아 재고 추가 를 참조하십시오.

pipelinectl 인터페이스에서 list_repos, load_repo, list_artifacts, load_artifact 명령을 사용하여 리포지토리 및 아티팩트에 액세스할 수 있습니다. 자세한 정보는 pipelinectl 을 참조하십시오.

빌드 시 규제 준수 데이터 수집

파이프라인이 실행되면 빌드에 관한 정보를 수집할 수 있습니다.

모든 수표, 스캔, 테스트 및 아티팩트 서명에 대한 증거를 수집하여 증거 보관함에 보관합니다. 파이프라인 로그 파일은 Tekton 정의가 포함된 파이프라인 데이터와 함께 라커에 저장됩니다. 피어 검토에 대한 규제 준수 데이터도 이 단계에서 수집됩니다. 파이프라인은 pipelinectl을 사용하여 마지막 빌드 이후에 병합된 가져오기 요청으로 저장소를 검색합니다. 또한 파이프라인은 PR 검토 상태를 확인하여 아티팩트로 저장하고 그 결과를 바탕으로 증거를 생성합니다.

최종 스크립트는 증거 상태에 따라 파이프라인 상태를 초록색 또는 빨간색으로 표시하는 평가자입니다. 실패가 있는 경우 지속적 통합 실행이 빨간색으로 표시됩니다.