HCP Packer 아티팩트 버전 검증하기

HCP Packer 아티팩트 버전 검증하기

이 주제는 Terraform 구성에서 참조하는 HCP Packer 아티팩트가 폐기(revoke)되지 않았는지 검증하는 방법을 설명해요. 관리자는 구식이 되거나 보안 위험을 초래하는 아티팩트 버전을 폐기할 수 있어요. 자세한 내용은 아티팩트 폐기 및 복원을 참고해 주세요.

출처: 문서

본문

개요

Sentinel policy-as-code 프레임워크로 아티팩트를 수동으로 검증하거나, HCP Packer용 HCP Terraform run task를 설정해 아티팩트 버전을 자동으로 검증할 수 있어요.

  • 수동 검증: 아티팩트를 수동으로 검증하려면 폐기된 아티팩트를 확인하는 Sentinel 정책을 정의해요.
  • 자동 검증: HCP Packer용 HCP Terraform run task를 설정하고 구성해 Terraform 구성 참조에서 폐기된 아티팩트를 확인해요.

직접 해보기: HCP Terraform run task 연동을 설정하고 테스트하는 방법에 대한 안내는 다음 튜토리얼을 완료해 주세요.

요구사항

  • 수동 검증에는 다음 소프트웨어 버전이 필요해요:
    • Terraform HCP 프로바이더 0.33.0 이상
    • Terraform 1.2.0 이상
  • run task가 참조된 아티팩트를 검증하려면 지원되는 리소스 유형을 사용해야 해요. 지원되는 유형에 대한 정보는 HCP Terraform run task 지원 리소스 유형 참조를 참고해 주세요.

수동 검증

hcp_packer_artifact 데이터 소스가 폐기된 아티팩트나 폐기 예정인 아티팩트를 참조하면 revoke_at 속성이 폐기 타임스탬프로 설정돼요.

revoke_at 속성을 확인하는 Sentinel 정책을 정의해 폐기된 아티팩트에 대한 Terraform 구성을 검증할 수 있어요. 작성 방법은 HCP Terraform 문서의 Sentinel 정책 정의를 참고해 주세요.

다음 예시에서 Terraform 구성은 데이터 소스가 폐기되지 않은 버전을 반환하는 경우에만 EC2 인스턴스를 프로비저닝해요.

resource "aws_instance" "app_server" {
  ami           = data.hcp_packer_artifact.ubuntu_us_east_2.external_identifier
  instance_type = "t2.micro"
  tags = {
    Name = "Learn-HCP-Packer"
  }

  lifecycle {
    precondition {
      condition = try(
        formatdate("YYYYMMDDhhmmss", data.hcp_packer_artifact.ubuntu_us_east_2.revoke_at) > formatdate("YYYYMMDDhhmmss", timestamp()),
        data.hcp_packer_artifact.ubuntu_us_east_2.revoke_at == ""
      )
      error_message = "Source AMI is revoked."
    }
  }
}

자동 검증

HCP Packer용 HCP Terraform run task는 Terraform 작업 중에 Terraform 구성에서 폐기된 아티팩트에 대한 참조를 HCP Packer가 확인하도록 지시해요. 폐기된 아티팩트를 참조하는 리소스를 감지하면 run task는 실패해요.

Terraform run 중 특정 시나리오에 run task가 응답하는 방식을 구성할 수도 있어요. Run task 설정 페이지를 방문해 HCP Packer run task를 구성해 주세요.

run task가 실패하면, run task의 시행 모드가 Mandatory로 설정된 경우 HCP Packer는 Terraform run을 중지해요. 모드가 Advisory로 설정된 경우에는 경고와 함께 run이 진행돼요. Terraform은 또한 run task 작업에 대한 정보를 콘솔에 출력해요. 세부 정보의 양은 HCP Packer 등급에 따라 달라져요.

HCP Terraform Free Edition에는 최대 10개 워크스페이스와 연결할 수 있는 run task가 하나 포함되어 있어요. 자세한 내용은 Packer 가격을 참고해 주세요.

직접 해보기: HCP Terraform run task 연동을 설정하고 테스트하는 방법에 대한 안내는 다음 튜토리얼을 완료해 주세요.

HCP Packer용 HCP Terraform run task 설정하기

  1. HCP Packer 홈페이지를 열고 Integrate with HCP Terraform을 클릭해요.
  2. 안내가 표시되면 Endpoint URL과 HMAC Key 필드의 값을 복사해요. 이 값은 HCP Terraform에서 run task를 만드는 데 필요해요.
  3. run task 생성 및 run task를 워크스페이스와 연결에 대해 HCP Terraform 문서에 설명된 지침을 완료해요.

run task 동작 구성하기

HCP Packer run task를 HCP Terraform 워크스페이스와 연결한 후, Terraform run 중 특정 시나리오에 HCP Packer가 응답하는 방식을 구성할 수 있어요.

베타 기능: 이 기능은 현재 베타 릴리스로 제공되고 있어요. 베타 기능은 안정적이지만 불완전할 수 있으며 변경될 수 있어요. 기능이 원활하게 작동하지 않거나 예상치 못한 문제가 발생할 수 있으므로, 프로덕션 워크플로우에서 베타 기능을 사용하는 것을 강력히 권장하지 않아요.

참고: 구성 가능한 run task는 Standard 요금제에서만 사용할 수 있어요.

예를 들어, Terraform이 추적되지 않는(unmanaged) 이미지를 참조할 때 배포를 차단하려면:

  1. HCP 포털에 로그인한 다음 조직을 선택해요.
  2. 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
  3. 왼쪽 탐색 메뉴에서 Settings를 클릭해요.
  4. Standard 요금제를 사용한다면 Settings 아래에서 Run task를 클릭해요.
  5. Untracked Image 섹션에서 Block을 선택해요.
  6. Save를 클릭해 설정을 적용해요.

HCP Packer에서 추적하는 이미지만 사용하는 배포를 강제하려면 Block을 선택해요. Block은 HCP Terraform에서 HCP Packer run task가 Mandatory로 구성된 경우에만 run을 중지해요. 배포를 중단하지 않고 추적되지 않는 이미지를 보고하려면 Warn을 선택해요.

run task 출력 검토하기

run task가 포함된 워크스페이스와 연결된 Terraform 구성을 실행해요. 자세한 내용은 HCP Terraform 문서를 참고해 주세요.

각 run 후 버전이나 채널을 변경해야 한다면 Details를 클릭해 HCP Packer 레지스트리 홈페이지를 열 수 있어요.

run task에 대한 세부 정보는 HCP Packer 에디션에 따라 달라져요.

Essentials 에디션 run task

Essentials 에디션 레지스트리의 경우 run task는 hcp_packer_artifact 데이터 소스로 검색된 아티팩트의 리소스를 스캔해요.

run task는 plan의 모든 리소스를 스캔하고 HCP Packer 데이터 소스를 참조하는 리소스만 검증해요. 폐기된 버전을 참조하는 새 리소스나 대체 리소스가 있으면 run task는 실패해요. run task의 시행 모드가 Mandatory로 설정된 경우 HCP Packer는 Terraform run을 중지해요. 모드가 Advisory로 설정된 경우에는 경고와 함께 run이 진행돼요.

Terraform은 또한 run task 작업에 대해 다음 정보를 콘솔에 출력해요:

  • 스캔된 리소스의 수.
  • 폐기된 버전을 참조하는 리소스의 수.
  • HCP Packer에서 더 최신 버전을 사용할 수 있는지 여부. 이 정보를 사용해 필요에 따라 폐기된 아티팩트에 대한 새 버전을 생성하고 채널을 그에 맞게 업데이트해요.
  • 폐기 예정인 버전을 참조하는 리소스의 수.
Standard 에디션 run task

Standard 에디션 레지스트리의 경우 run task는 다음 유형의 검증을 수행해요:

  • 데이터 소스 아티팩트 검증: run task는 HCP Packer 데이터 소스를 통해 아티팩트를 참조하는 계획된 리소스를 스캔해요.
  • 리소스 아티팩트 검증: run task는 하드코딩된 머신 아티팩트 ID를 사용하는 계획된 리소스를 스캔해요. run task가 검증할 수 있는 리소스 목록은 HCP Terraform run task 지원 리소스 유형을 참고해 주세요.

run task는 plan에서 지금까지 알려진 모든 리소스를 스캔해요. 각 리소스에 대해 run task는 HCP Packer의 버전과 연결된 아티팩트가 있는지 확인해요. 폐기된 버전을 참조하는 새 리소스나 대체 리소스가 있으면 run task는 실패해요. run task의 시행 모드가 Mandatory로 설정된 경우 HCP Packer는 Terraform run을 중지해요. 모드가 Advisory로 설정된 경우에는 경고와 함께 run이 진행돼요.

HCP Terraform은 각 리소스의 상태와 연결된 일치하는 HCP Packer 아티팩트를 포함한 리소스의 구조화된 목록도 표시해요.

더 알아보기