HCP Packer 계보(Ancestry) 보기

HCP Packer 계보(Ancestry) 보기

이 주제는 HCP Packer에 저장된 계보 정보를 보는 방법을 설명해요. 계보는 소스 아티팩트(또는 부모(parent))와 다운스트림 하위(descendant, 또는 자식(child)) 사이의 관계를 나타내요. 계보 및 기타 HCP Packer 개념에 대한 자세한 내용은 메타데이터 저장 개요를 참고해 주세요.

출처: 문서

본문

배경

Packer가 레지스트리로 아티팩트 메타데이터를 전송할 때마다 HCP Packer는 자식 버전과 부모 버전 사이에 계보 관계를 만들어요. Packer 템플릿이 HCP Packer 채널에서 아티팩트를 소싱하도록 구성된 경우 HCP Packer UI에서 계보 상태를 볼 수 있어요.

계보 관계

HCP Packer가 계보 관계에 대해 보고할 수 있는 세부 정보의 양은 두 가지 요소에 따라 달라져요. HCP Packer는 아티팩트를 *추적(tracking)*할 때 더 많은 정보를 보고할 수 있는데, 이는 아티팩트의 메타데이터가 HCP Packer로 전송되었음을 의미해요. 또한 부모를 채널에 할당하고 이를 Packer 템플릿에서 참조하면 HCP Packer가 자식이 구식일 때 보고할 수 있어요. 다음 표는 부모 추적과 채널 할당이 계보 정보 저장 및 검색에 어떤 영향을 주는지 설명해요:

부모 추적 부모가 채널에 할당됨 계보 세부 정보
아니요 아니요 HCP Packer는 부모의 source_external_identifier를 저장해요. HCP Packer API를 조회해 이 계보 정보를 얻을 수 있어요. 자세한 내용은 계보 보기를 참고해 주세요.
예 아니요 HCP Packer가 계보 관계를 만들어요. 계보 상태는 UI에서 Undetermined로 설정돼요. 각 버전의 자식을 자동으로 폐기할 수 있어요. 자세한 내용은 아티팩트 버전 폐기 및 복원을 참고해 주세요.
예 예 HCP Packer가 계보 관계를 만들고 UI에 해당 계보 상태를 표시해요. 자식이 구식일 때 UI가 경고해요. 각 버전의 자식을 자동으로 폐기할 수 있어요.

계보 상태

HCP Packer는 Packer가 자식을 빌드할 때 부모 버전이 할당된 채널에서 계보 상태를 추적해요. 자세한 내용은 채널 생성 및 관리를 참고해 주세요.

다음 표는 HCP가 버전에 할당할 수 있는 계보 상태를 설명해요:

상태 설명
Up to date 버전의 부모가 현재 채널에 할당되어 있어요. 버전이 부모의 최신 버전으로 빌드되지 않았을 수도 있어요. 예를 들어 채널을 업데이트하지 않고 부모를 다시 빌드했다면 HCP Packer는 여전히 모든 자식을 Up to date로 보고해요.
Out of date 버전의 부모가 현재 채널에 할당되어 있지 않아요. 예를 들어 부모 아티팩트를 최근에 다시 빌드했다면 채널이 최신 버전을 가리켜요.
Undetermined HCP Packer가 자식의 상태를 판단할 수 없어요. 다음 상황에서 Undetermined 계보 상태가 발생해요:
- 자식이 빌드되었지만 부모 버전이 채널에 할당되지 않음
- 채널이 버킷에 더 이상 존재하지 않음
- HCP Packer가 부모를 추적하지 않음

요구사항

  • 아티팩트는 Packer v1.8.2 이상으로 빌드되어야 해요.
  • UI에서 계보 정보를 보려면 아티팩트가 Packer로 빌드되고 메타데이터가 HCP Packer로 전송되어야 해요.
  • 자식을 빌드하기 전에 부모 버전이 채널에 할당되어야 해요. 자세한 내용은 채널 생성 및 관리를 참고해 주세요.
  • Packer 구성은 부모 아티팩트를 참조하기 위해 채널을 사용해야 해요. 자세한 내용은 아티팩트 메타데이터 참조를 참고해 주세요.

계보 보기

HCP Packer UI에서 계보 상태를 보려면 버킷을 클릭해 개요 페이지를 열어요. Ancestry 섹션은 현재 아티팩트의 각 부모와 자식, 그리고 그 계보 상태를 표시해요.

추적되지 않는 아티팩트 부모 계보 보기

HCP Packer에서 추적되지 않는 부모 아티팩트는 UI에서 보이지 않아요. 추적되지 않는 부모에서 소싱된 아티팩트의 계보 정보를 보려면 buckets/{bucket_name}/versions/{fingerprint} API에 GET 요청을 보낼 수 있어요.

다음 예시는 핑거프린트 01HM6MPATNN8F2MPQM7C5556M8을 사용해 계보 정보를 검색해요:

$ curl –request GET https://api.cloud.hashicorp.com/packer/2023-01-01/organizations/$ORGANIZATION_ID/projects/$PROJECT_ID/buckets/my-bucket/versions/01HM6MPATNN8F2MPQM7C5556M8 --header "authorization: Bearer ***"

다음 예시 응답은 핑거프린트 01HM6MPATNN8F2MPQM7C5556M8의 자식 버전에 대한 부모 아티팩트를 보여 줘요. 각 빌드에 대한 부모의 외부 식별자는 source_external_identifier에서 볼 수 있어요:


{
    "version": {
        // …
        "builds": [
            {
                "id": "01G9MYAR0KHRHNA0ZSCEAK0G96",
                "version_id": "01G9MYAQCSJAXTYYHZP6WE6Z6T",
                "component_type": "amazon-ebs.basic-example",
                "packer_run_uuid": "98092f7a-11d5-663c-dde9-c0ab67407392",
                "artifacts": [
                    {
        // …
                    }
                ],
                "platform": "aws",
                "status": "DONE",
                "source_external_identifier": "ami-0688ba7eeeeefe3cd"
            }
        ]
    }
}

더 알아보기