HCP Packer 아티팩트 메타데이터 참조하기

HCP Packer 아티팩트 메타데이터 참조하기

이 주제는 Terraform 구성과 Packer 템플릿을 구성해 HCP Packer 레지스트리에 저장된 아티팩트 메타데이터를 참조하는 방법을 설명해요. HCP Packer에 메타데이터를 저장하는 방법은 HCP Packer로 메타데이터 전송하기를 참고해 주세요.

출처: 문서

본문

개요

Packer 템플릿과 Terraform 구성 파일을 구성해 HCP Packer 레지스트리에 저장된 아티팩트 메타데이터를 참조할 수 있어요. 메타데이터와 연결된 HCP Packer 채널을 지정하는 데이터 소스를 템플릿이나 구성에 추가해 주세요.

채널은 아티팩트 소비자가 하드코딩하는 대신 Packer 템플릿이나 Terraform 구성에서 사용할 수 있는 사람이 읽을 수 있는 이름이에요. 이렇게 하면 애플리케이션에서 자동으로 올바른 버전을 사용할 수 있어요. 자세한 내용은 채널 생성 및 관리를 참고해 주세요.

파일을 수동으로 구성하거나, HCP Packer UI의 HCL 생성기(generator)로 생성한 HCL을 템플릿이나 구성에 복사해 붙여 넣을 수 있어요.

템플릿이나 구성을 실행하면 Packer 또는 Terraform이 HCP Packer 레지스트리에 메타데이터가 있는 골든 아티팩트에서 다운스트림 아티팩트를 빌드해요. 요금제에 따라 이러한 데이터 소스 사용이 청구 가능한 요청이 될 수 있어요.

직접 해보기: 시작하려면 다음 튜토리얼을 완료해 주세요.

Packer 템플릿 구성하기

  1. Packer 템플릿에 다음 데이터 소스를 추가해 주세요:
  2. source 블록에 메타데이터를 전달해 기본 아티팩트에서 자식 아티팩트를 빌드할 수 있게 해요. source 데이터 블록을 사용하면 기존 이미지의 가장 최근 승인 버전 위에 새 아티팩트를 빌드할 수 있어요. 인수와 구성 옵션의 전체 목록은 Packer 데이터 소스 문서를 참고해 주세요.

다음 예시에서 템플릿은 us-west-2의 AMI ID를 가져와 다운스트림 빌드의 기본 아티팩트로 사용해요.

# Create local and get artifact id from the base artifact
# Retrieve metadata from the production artifact channel
data "hcp-packer-artifact" "secondary-source" {
  bucket_name = "learn-packer-ubuntu"
  channel_name = "production"
  platform  = "aws"
  region = "us-west-2"
}

# Set the `source_ami` to the base artifact id
source "amazon-ebs" "packer-secondary" {
  source_ami = data.hcp-packer-artifact.secondary-source.id
  ...
}

Packer 템플릿 구성을 생성하기 위해 HCP Packer UI를 사용하는 방법은 HCL 생성기를 참고해 주세요.

Terraform 구성 파일 구성하기

HCP Terraform 프로바이더 데이터 소스를 사용해 아티팩트 메타데이터를 가져와 Terraform 구성에서 참조할 수 있어요. 자세한 내용은 HCP Terraform 프로바이더 문서를 참고해 주세요.

Terraform 구성에 프로바이더를 추가하고 다음 파라미터를 지정해 주세요:

다음 예시에서 Terraform HCP 프로바이더는 us-west-2의 AMI ID를 가져와 EC2 인스턴스를 프로비저닝하는 데 사용해요. 데이터 소스와 프로바이더 작업에 대한 자세한 내용은 Terraform 문서를 참고해 주세요.

terraform {
  required_providers {
    hcp = {
      source = "hashicorp/hcp"
      version = ">= 0.81.0"
    }

    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.52.0"
    }
  }

    required_version = ">= 0.14.9"

}

# Create local variable and get artifact id from the base artifact
# Retrieve metadata from the production artifact channel
data "hcp_packer_artifact" "ubuntu-aws-west" {
  bucket_name    = "learn-packer-ubuntu"
  channel_name   = "production"
  platform       = "aws"
  region         = "us-west-2"
}

provider "aws" {
  profile = "default"
  region  = "us-west-2"
}

# Provision an EC2 instance with the HCP Packer artifact
resource "aws_instance" "app_server" {
  ami           = data.hcp_packer_artifact.ubuntu-aws-west.external_identifier
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

Terraform 구성을 생성하기 위해 HCP Packer UI를 사용하는 방법은 HCL 생성기를 참고해 주세요.

HCL 생성기

HCP Packer는 레지스트리의 각 버킷에서 메타데이터를 가져오는 HCL 구성을 생성할 수 있어요. UI에서 채널, 플랫폼, 리전을 지정한 다음 자동 생성된 코드를 Packer 또는 Terraform 템플릿에 붙여 넣어요.

  1. Packer를 클릭해 HCP Packer 레지스트리 페이지를 열어요.
  2. 버킷을 클릭해 Overview 페이지를 열어요.
  3. Use as a data source 아래에서 옵션을 선택해요:
    • Terraform 데이터 소스용 코드를 생성하려면 Use with Terraform
    • Packer 데이터 소스용 구성을 생성하려면 Use with Packer
  4. 참조하려는 아티팩트의 artifact channel, platform, region을 선택해요. HCP Packer는 선택 사항에 따라 HCL 구성을 자동 생성해요.
  5. Copy code를 클릭해 구성을 클립보드에 복사해요.
  6. 자동 생성된 HCL 코드를 Terraform 또는 Packer 템플릿의 source 블록에 붙여 넣어요.

삭제되거나 비활성화된 레지스트리

비활성화되거나 삭제된 레지스트리의 메타데이터를 참조하면 소비자는 오류를 받아요. 관리자가 레지스트리를 수동으로 비활성화하거나 삭제할 수도 있고, 청구 문제로 HCP Packer가 자동으로 비활성화할 수도 있어요. 문의 사항은 HashiCorp Support에 연락해 주세요.

더 알아보기