hcp-packer-artifact 데이터 소스
hcp-packer-artifact 데이터 소스
hcp-packer-artifact 데이터 소스는 HCP Packer 레지스트리에서 아티팩트에 대한 정보를 가져와 주는 데이터 소스예요. 가져온 정보를 사용해 다양한 Packer 빌더에 소스 아티팩트를 제공할 수 있습니다.
출처: Packer 공식 문서
본문
hcp-packer-artifact 데이터 소스는 HCP Packer 레지스트리에서 아티팩트에 대한 정보를 가져옵니다. 이렇게 가져온 정보를 사용해 여러 Packer 빌더에 소스 아티팩트를 제공할 수 있어요.
HCP Packer를 시작하려면 HCP Packer 문서를 참고하거나 Get Started with HCP Packer 튜토리얼을 시도해 보세요.
Note: 비활성화되거나 삭제된 레지스트리의 메타데이터를 참조하려 하면 오류가 발생합니다. 관리자가 레지스트리를 수동으로 비활성화하거나 삭제할 수 있고, HCP Packer는 결제 문제가 있는 레지스트리를 자동으로 비활성화해요. 질문이 있으면 HashiCorp 지원팀에 문의하세요.
폐기된 버전 (Revoked Versions)
HCP Packer 버전이 폐기(revoked)되면 hcp-packer-version 데이터 소스는 실패하고 Packer는 빌드를 진행하지 않아요. 폐기된 아티팩트로 새 아티팩트를 빌드하는 것은 비준수(compliant)가 아닙니다. 폐기 예정인 버전은 폐기 날짜까지는 여전히 유효한 것으로 간주됩니다.
기본 예제 (Basic Example)
아래는 완전히 동작하는 예시예요. 이미지 아티팩트에 대한 정보를 저장하고, 이후 변수로서 파싱·접근할 수 있습니다.
data "hcp-packer-artifact" "example" {
bucket_name = "hardened-ubuntu-16-04"
version_fingerprint = "${data.hcp-packer-version.hardened-source.fingerprint}"
platform = "aws"
region = "us-east-1"
}
전체 예제 (Full Example)
이 데이터 소스는 hcp-packer-version 데이터 소스와 함께 사용해 채널(channel)로 버전 fingerprint를 가져올 수 있어요. 버전 데이터 소스에 버전 fingerprint와 채널 이름을 제공하고, 아티팩트 데이터 소스 안에서 버전 소스를 사용한 뒤, 소스 블록 안에서 아티팩트 데이터 소스를 사용합니다.
# Retrieves information about the HCP Packer Version; a "version" can be
# thought of as all the metadata created by a single call of `packer build`.
data "hcp-packer-version" "hardened-source" {
bucket_name = "hardened-ubuntu-16-04"
channel_name = "dev"
}
# Retrieves information about the HCP Packer Artifact; an artifact can be thought
# of as all the metadata (including the artifact names) created by a single
# "source" builder; this can include multiple artifacts so we provide a
# region to disambiguate.
data "hcp-packer-artifact" "example" {
bucket_name = "hardened-ubuntu-16-04"
version_fingerprint = data.hcp-packer-version.hardened-source.fingerprint
platform = "aws"
region = "us-east-1"
}
# This source uses the output from a previous Packer build. By using the
# HCP Packer Registry in this way, you can easily create build pipelines where
# a single base artifact can be customized in multiple secondary layers.
source "amazon-ebs" "packer-secondary" {
source_ami = data.hcp-packer-artifact.example.external_identifier
...
}
설정 레퍼런스 (Configuration Reference)
설정 옵션은 아래에서 필수(required)와 선택(optional) 두 범주로 정리돼 있어요. 각 범주 안에서 사용 가능한 옵션은 알파벳 순으로 나열되고 설명됩니다.
필수 (Required):
bucket_name(string) - 아티팩트가 있는 버킷의 이름.channel_name(string) - 아티팩트를 가져올 때 사용할 채널의 이름.channel_name또는version_fingerprint중 하나는 반드시 설정해야 해요. 단일 버전에서 여러 아티팩트를 사용한다면, 먼저 버전을 소싱하고 이후 사용에서 그것을 참조하는 편이 나을 수 있어요. 채널이 설정된hcp_packer_artifact는 각각 잠재적으로 과금되는 HCP Packer 요청을 생성하지만, 여러hcp_packer_artifact가 공유hcp_packer_version을 사용하면 과금 가능한 요청은 하나만 생성되기 때문입니다.version_fingerprint(string) - 아티팩트를 가져올 때 사용할 버전의 fingerprint. 이것 또는channel_name중 하나는 반드시 설정해야 해요.channel_name과 상호 배타적입니다.platform(string) - 아티팩트를 위한 플랫폼의 이름. 예: "aws", "azure", "gce".region(string) - 아티팩트가 있는 리전의 이름. 예: "us-east-1".
선택 (Optional):
Note: 이 데이터 소스는 지정된 버전과 연관된 반환된 아티팩트 목록에서 주어진 옵션으로 필터링된 첫 번째 발견된 아티팩트의 메타데이터만 반환해요. 따라서 같은 리전에 여러 아티팩트가 존재하면 그중 하나만 선택합니다. 이 경우
component_type옵션으로 소스 빌드 이름(예: amazon-ebs.example)으로 아티팩트를 필터링할 수 있어요.
component_type(string) - 아티팩트를 만드는 데 사용된 특정 Packer 빌더. 예: "amazon-ebs.example"
출력 필드 (Output Fields):
platform(string) - 아티팩트가 존재하는 플랫폼의 이름. 예: "aws", "azure", "gce".component_type(string) - 아티팩트를 만드는 데 사용된 특정 Packer 빌더 또는 포스트 프로세서.created_at(string) - 아티팩트가 생성된 날짜와 시간.build_id(string) - 아티팩트를 만든 빌드의 ID. 이것은 UUID와 비슷한 고유 식별자인 ULID예요. 빌드가 처음 생성될 때 HCP Packer 레지스트리가 만들며, 이 빌드에 고유합니다.version_id(string) - 버전 ID. 이것은 UUID와 비슷한 고유 식별자인 ULID예요. 버전이 처음 생성될 때 HCP Packer 레지스트리가 만들며, 이 버전에 고유합니다.channel_id(string) - 버전을 조회하는 데 사용된 채널의 ID. 채널 대신version_fingerprint를 직접 사용했다면 이 값은 비어 있습니다.packer_run_uuid(string) - 이 아티팩트를 만든 Packer 실행과 연관된 UUID.external_identifier(string) - 빌드가 제공한 원격 아티팩트의 식별자 또는 URL. 예: ami-12345.region(string) -packer build가 준 리전. 예: "ap-east-1". 로컬 관리 클라우드에서는 클러스터, 서버 또는 데이터스토어에 매핑될 수도 있어요.labels(map [string] string) - 이 빌드와 연관된 key:value 메타데이터 레이블.