InfoGrab Docs

머지 리퀘스트에서의 OpenTofu 통합

요약

Infrastructure as Code(IaC) 변경사항에 대한 협업에는 코드 변경사항과 예상되는 인프라 변경사항을 모두 검토하고 승인해야 합니다. GitLab Terraform/OpenTofu Report 아티팩트를 사용하면 tofu plan 실행에 대한 세부 정보를 머지 리퀘스트 위젯에 직접 노출하여 OpenTofu가 생성, 수정 또는 삭제하는 리소스에 대한 통계를 볼 수 있습니다.

Infrastructure as Code(IaC) 변경사항에 대한 협업에는 코드 변경사항과 예상되는 인프라 변경사항을 모두 검토하고 승인해야 합니다. GitLab은 머지 리퀘스트 페이지를 사용하여 OpenTofu 코드 변경사항과 예상 효과에 대한 협업을 지원하는 솔루션을 제공합니다. 이를 통해 사용자는 IaC 워크플로우를 간소화하기 위해 커스텀 도구를 구축하거나 서드파티 솔루션에 의존할 필요가 없습니다.

머지 리퀘스트에 OpenTofu Plan 정보 출력#

GitLab Terraform/OpenTofu Report 아티팩트를 사용하면 tofu plan 실행에 대한 세부 정보를 머지 리퀘스트 위젯에 직접 노출하여 OpenTofu가 생성, 수정 또는 삭제하는 리소스에 대한 통계를 볼 수 있습니다.

Warning

다른 job 아티팩트와 마찬가지로 OpenTofu 플랜 데이터는 저장소에서 Guest 권한을 가진 모든 사람이 볼 수 있습니다. OpenTofu와 GitLab 모두 기본적으로 플랜 파일을 암호화하지 않습니다. plan.json 또는 plan.cache 파일에 비밀번호, 액세스 토큰 또는 인증서와 같은 민감한 데이터가 포함된 경우 플랜 출력을 암호화하거나 프로젝트 가시성 설정을 수정해야 합니다. 또한 공개 파이프라인비활성화하고 아티팩트의 공개 플래그를 false로 설정해야 합니다(public: false). 이 설정을 통해 아티팩트는 GitLab 관리자와 Reporter, Developer, Maintainer 또는 Owner 권한을 가진 프로젝트 멤버만 액세스할 수 있습니다.

OpenTofu 보고서 아티팩트 구성#

GitLab은 OpenTofu CI/CD 컴포넌트를 통해 OpenTofu와 통합합니다. 이 컴포넌트는 GitLab 관리 OpenTofu 상태를 사용하여 머지 리퀘스트에 OpenTofu 변경사항을 표시합니다.

OpenTofu 보고서 아티팩트 자동 구성#

plan job에서 OpenTofu 보고서 아티팩트를 자동으로 구성하는 OpenTofu CI/CD 컴포넌트를 사용해야 합니다.

OpenTofu 보고서 아티팩트 수동 구성#

빠른 설정을 위해 사전 구축된 이미지를 사용자 지정하고 gitlab-tofu 도우미를 활용하는 것이 좋습니다.

GitLab OpenTofu Report 아티팩트를 수동으로 구성하려면:

  1. 이러한 파일을 여러 번 참조하기 위한 재사용 가능한 변수를 정의합니다:

    variables:
      PLAN: plan.cache
      PLAN_JSON: plan.json
    
  2. 경량의 유연한 커맨드라인 JSON 프로세서jq를 설치합니다.

  3. tofu plan 출력에서 추출하려는 정보를 파싱하는 특정 jq 명령의 별칭을 만듭니다:

    before_script:
      - apk --no-cache add jq
      - alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
    

    [!note] Bash를 사용하는 배포판(예: Ubuntu)에서는 비대화형 모드에서 alias 문이 확장되지 않습니다. 파이프라인이 convert_report: command not found 오류로 실패하면 스크립트에 shopt 명령을 추가하여 별칭 확장을 명시적으로 활성화할 수 있습니다:

    before_script:
      - shopt -s expand_aliases
      - alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
    
  4. tofu plantofu show를 실행하는 script를 정의합니다. 이러한 명령은 출력을 파이프하고 관련 정보를 저장 변수 PLAN_JSON으로 변환합니다. 이 JSON은 GitLab OpenTofu Report 아티팩트를 만드는 데 사용됩니다. OpenTofu 보고서는 OpenTofu tfplan.json 파일을 가져옵니다. 수집된 OpenTofu 플랜 보고서는 아티팩트로 GitLab에 업로드되고 머지 리퀘스트에 표시됩니다.

    plan:
      stage: build
      script:
        - terraform plan -out=$PLAN
        - terraform show -json $PLAN | convert_report > $PLAN_JSON
      artifacts:
        reports:
          terraform: $PLAN_JSON
    
  5. 파이프라인을 실행하여 머지 리퀘스트에 위젯을 다음과 같이 표시합니다:

    머지 리퀘스트 Terraform 위젯

    [!note] 위젯에서 보고하는 최대 변경 수는 각 액션에 대해 999,999입니다. 이 제한은 표시 목적으로만 사용되며, 더 많은 수의 리소스를 변경하는 플랜은 의도한 대로 적용할 수 있습니다.

  6. 위젯에서 View Full Log를 선택하여 파이프라인 로그에 있는 플랜 출력으로 이동합니다:

    Terraform 플랜 로그

머지 리퀘스트에서의 OpenTofu 통합

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

Infrastructure as Code(IaC) 변경사항에 대한 협업에는 코드 변경사항과 예상되는 인프라 변경사항을 모두 검토하고 승인해야 합니다. GitLab Terraform/OpenTofu Report 아티팩트를 사용하면 tofu plan 실행에 대한 세부 정보를 머지 리퀘스트 위젯에 직접 노출하여 OpenTofu가 생성, 수정 또는 삭제하는 리소스에 대한 통계를 볼 수 있습니다.

Infrastructure as Code(IaC) 변경사항에 대한 협업에는 코드 변경사항과 예상되는 인프라 변경사항을 모두 검토하고 승인해야 합니다. GitLab은 머지 리퀘스트 페이지를 사용하여 OpenTofu 코드 변경사항과 예상 효과에 대한 협업을 지원하는 솔루션을 제공합니다. 이를 통해 사용자는 IaC 워크플로우를 간소화하기 위해 커스텀 도구를 구축하거나 서드파티 솔루션에 의존할 필요가 없습니다.

머지 리퀘스트에 OpenTofu Plan 정보 출력#

GitLab Terraform/OpenTofu Report 아티팩트를 사용하면 tofu plan 실행에 대한 세부 정보를 머지 리퀘스트 위젯에 직접 노출하여 OpenTofu가 생성, 수정 또는 삭제하는 리소스에 대한 통계를 볼 수 있습니다.

Warning

다른 job 아티팩트와 마찬가지로 OpenTofu 플랜 데이터는 저장소에서 Guest 권한을 가진 모든 사람이 볼 수 있습니다. OpenTofu와 GitLab 모두 기본적으로 플랜 파일을 암호화하지 않습니다. plan.json 또는 plan.cache 파일에 비밀번호, 액세스 토큰 또는 인증서와 같은 민감한 데이터가 포함된 경우 플랜 출력을 암호화하거나 프로젝트 가시성 설정을 수정해야 합니다. 또한 공개 파이프라인비활성화하고 아티팩트의 공개 플래그를 false로 설정해야 합니다(public: false). 이 설정을 통해 아티팩트는 GitLab 관리자와 Reporter, Developer, Maintainer 또는 Owner 권한을 가진 프로젝트 멤버만 액세스할 수 있습니다.

OpenTofu 보고서 아티팩트 구성#

GitLab은 OpenTofu CI/CD 컴포넌트를 통해 OpenTofu와 통합합니다. 이 컴포넌트는 GitLab 관리 OpenTofu 상태를 사용하여 머지 리퀘스트에 OpenTofu 변경사항을 표시합니다.

OpenTofu 보고서 아티팩트 자동 구성#

plan job에서 OpenTofu 보고서 아티팩트를 자동으로 구성하는 OpenTofu CI/CD 컴포넌트를 사용해야 합니다.

OpenTofu 보고서 아티팩트 수동 구성#

빠른 설정을 위해 사전 구축된 이미지를 사용자 지정하고 gitlab-tofu 도우미를 활용하는 것이 좋습니다.

GitLab OpenTofu Report 아티팩트를 수동으로 구성하려면:

  1. 이러한 파일을 여러 번 참조하기 위한 재사용 가능한 변수를 정의합니다:

    variables:
      PLAN: plan.cache
      PLAN_JSON: plan.json
    
  2. 경량의 유연한 커맨드라인 JSON 프로세서jq를 설치합니다.

  3. tofu plan 출력에서 추출하려는 정보를 파싱하는 특정 jq 명령의 별칭을 만듭니다:

    before_script:
      - apk --no-cache add jq
      - alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
    

    [!note] Bash를 사용하는 배포판(예: Ubuntu)에서는 비대화형 모드에서 alias 문이 확장되지 않습니다. 파이프라인이 convert_report: command not found 오류로 실패하면 스크립트에 shopt 명령을 추가하여 별칭 확장을 명시적으로 활성화할 수 있습니다:

    before_script:
      - shopt -s expand_aliases
      - alias convert_report="jq -r '([.resource_changes[]?.change.actions?]|flatten)|{\"create\":(map(select(.==\"create\"))|length),\"update\":(map(select(.==\"update\"))|length),\"delete\":(map(select(.==\"delete\"))|length)}'"
    
  4. tofu plantofu show를 실행하는 script를 정의합니다. 이러한 명령은 출력을 파이프하고 관련 정보를 저장 변수 PLAN_JSON으로 변환합니다. 이 JSON은 GitLab OpenTofu Report 아티팩트를 만드는 데 사용됩니다. OpenTofu 보고서는 OpenTofu tfplan.json 파일을 가져옵니다. 수집된 OpenTofu 플랜 보고서는 아티팩트로 GitLab에 업로드되고 머지 리퀘스트에 표시됩니다.

    plan:
      stage: build
      script:
        - terraform plan -out=$PLAN
        - terraform show -json $PLAN | convert_report > $PLAN_JSON
      artifacts:
        reports:
          terraform: $PLAN_JSON
    
  5. 파이프라인을 실행하여 머지 리퀘스트에 위젯을 다음과 같이 표시합니다:

    머지 리퀘스트 Terraform 위젯

    [!note] 위젯에서 보고하는 최대 변경 수는 각 액션에 대해 999,999입니다. 이 제한은 표시 목적으로만 사용되며, 더 많은 수의 리소스를 변경하는 플랜은 의도한 대로 적용할 수 있습니다.

  6. 위젯에서 View Full Log를 선택하여 파이프라인 로그에 있는 플랜 출력으로 이동합니다:

    Terraform 플랜 로그