JSON 템플릿용 builders 레퍼런스
JSON 템플릿용 builders 레퍼런스
이 글에서는 JSON 템플릿의 builders 블록에 대한 레퍼런스 정보를 다뤄요.
출처: Packer 공식 문서
본문
참고: 이 페이지는 이전 스타일의 JSON Packer 템플릿에 관한 내용이에요. JSON 템플릿은 여전히 Packer 코어가 지원하지만, Packer 코어에 추가된 새 기능은 JSON 템플릿에는 구현되지 않을 수 있어요. Packer에서 최상의 경험을 얻으려면 가능하면 빨리 HCL 템플릿으로 전환하는 걸 권장해요. 템플릿 업그레이드를 돕기 위해 우리는 hcl2_upgrade 명령어를 작성해 뒀어요.
소개 (Introduction)
builders 블록은 Packer가 템플릿을 위한 머신 이미지를 생성하는 데 사용해야 하는 모든 builder의 배열을 담아요.
Builder는 머신을 만들고 그것으로 다양한 플랫폼용 이미지를 생성해요. 예를 들어 EC2, VMware, VirtualBox 등에 대한 별도의 builder가 있어요. Packer는 기본적으로 많은 builder를 동봉하고, 새 builder를 추가하도록 확장될 수도 있어요.
이 문서 페이지는 템플릿에서 builder를 구성하는 방법을 다뤄요. 다만 각 builder에 사용 가능한 특정 구성 옵션은 그 특정 builder의 문서를 참조해야 해요.
템플릿 안에서 builder 정의 섹션은 다음과 같이 생겼어요:
{
"builders": [
// ... one or more builder definitions here
]
}
Builder 정의 (Builder Definition)
단일 builder 정의는 정확히 하나의 빌드에 매핑돼요. builder 정의는 최소한 type 키를 요구하는 JSON 객체예요. type은 빌드를 위한 머신 이미지를 만드는 데 사용될 builder의 이름이에요.
type 외에도 다른 키들이 builder 자체를 구성해요. 예를 들어 AWS builder는 access_key, secret_key와 다른 몇 가지 설정을 요구해요. 이것들은 builder 정의 안에 직접 배치돼요.
아래에 예시 builder 정의가 있어요. 이 경우 AWS builder를 구성해요:
{
"type": "amazon-ebs",
"access_key": "...",
"secret_key": "..."
}
이름 있는 빌드 (Named Builds)
Packer의 각 빌드에는 이름이 있어요. 기본적으로 이름은 사용 중인 builder의 이름 그대로예요. 일반적으로 이 정도면 충분해요. 이름은 출력에서 어떤 일이 일어나고 있는지 나타내는 지표로만 쓰여요. 다만 원한다면 builder 정의 안의 name 키로 사용자 지정 이름을 지정할 수 있어요.
이것은 같은 기본 builder를 사용하는 여러 빌드가 정의된 경우 특히 유용해요. 이 경우 이름이 고유해야 하므로 적어도 하나에는 이름을 지정해야 해요.
Communicator (Communicators)
모든 빌드는 단일 communicator와 연관돼요. Communicator는 원격 머신(예: AWS 인스턴스 또는 로컬 가상 머신)을 프로비저닝하기 위한 연결을 설정하는 데 사용돼요.
다양한 builder의 모든 예시는 어떤 communicator(보통 SSH)를 보여주지만, communicator는 매우 사용자 정의 가능하므로 communicator 문서를 읽는 걸 권장해요.