post-processor 블록
post-processor 블록
이 주제는 post-processor 블록에 대한 레퍼런스 정보를 제공해요.
출처: Packer 공식 문서
본문
설명 (Description)
post-processor 블록은 포스트-프로세서가 어떻게 구성되는지를 정의해요.
# builds.pkr.hcl
build {
# ... build image
post-processor "checksum" { # checksum image
checksum_types = [ "md5", "sha512" ] # checksum the artifact
keep_input_artifact = true # keep the artifact
}
post-processor "amazon-import" { # upload image to amazon
}
}
각 post-processor는 정의된 각 빌드가 끝난 뒤에 실행돼요. 포스트-프로세서는 빌드로부터 Artifact를 받아요. 포스트-프로세서는 선택 사항이며, 아티팩트를 업로드하거나, 다시 패키징하거나, 더 많은 작업을 하는 데 사용할 수 있어요. 사용 가능한 포스트-프로세서 목록은 post-processors 섹션에서 찾을 수 있어요.
post-processor는 post-processors 블록 목록(즉 연결된 포스트-프로세서들의 목록)에 정의될 때 다른 포스트-프로세서로부터 Artifact를 받을 수도 있어요.
:::note 포스트-프로세서가 받는 입력 'artifact'는 기본적으로 자동으로 삭제돼요. :::
입력 아티팩트 유지하기 (Keep an input artifact)
입력 아티팩트가 삭제되는 것을 막으려면 keep_input_artifact 필드를 true로 설정해서 Packer가 두 아티팩트 모두를 유지하게 할 수 있어요. 예를 들어 아티팩트를 checksum하고 그 아티팩트를 유지하고 싶다면:
# builds.pkr.hcl
build {
# ...
post-processor "checksum" {
checksum_types = [ "md5", "sha512" ]
keep_input_artifact = true
}
}
특정 빌드에서만 실행하기 (Run on Specific Builds)
only 또는 except 설정을 사용해 특정 소스에서만 포스트-프로세서를 실행할 수 있어요. 이 두 설정은 이름 그대로 동작해요. only는 지정된 소스에서만 포스트-프로세서를 실행하고, except는 지정된 소스를 제외한 나머지에서 포스트-프로세서를 실행해요.
only가 사용된 예시를 아래에서 보여드릴게요. except의 사용법도 사실상 동일해요.
# builds.pkr.hcl
build {
# ...
post-processor "checksum" {
checksum_types = [ "md5", "sha512" ]
keep_input_artifact = true
only = ["amazon-ebs.example"]
}
}
only나 except 안의 값은 빌더 유형이 아니라 소스 이름이에요.
커맨드라인에서 packer build를 실행할 때 특정 포스트-프로세서를 제외하고 싶다면 이렇게 할 수 있어요. packer build --except=checksum mytemplate.pkr.hcl는 checksum 포스트-프로세서를 실행하지 않아요. 이 커맨드라인 제외는 포스트-프로세서 이름을 참조해서 동작해요. 기본적으로 포스트-프로세서는 위의 checksum 예시에서처럼 그 유형의 이름을 따서 이름 지어져요. 각 포스트-프로세서 블록에 "name" 필드를 추가하면 포스트-프로세서의 이름을 고유하게 만들 수 있어요.
-except 플래그는 커맨드라인에서 포스트-프로세서를 걸러낼 수 있지만, -only 플래그는 포스트-프로세서에 동작하지 않아요. 특정 소스 빌드에 대해서만 포스트-프로세서를 실행하고 싶다면, 위에서 설명한 대로 hcl 템플릿 안에서 only=[source] 문법을 사용해야 해요.
빌드 컨텍스트 변수 (Build Contextual Variables)
Packer는 포스트-프로세서에서 연결 정보와 기본 인스턴스 상태 정보에 접근할 수 있게 해 줘요. 이 정보는 build 변수에 저장돼요. 자세한 내용과 사용 예시는 Contextual Variables 문서를 확인하세요.
관련 (Related)
post-processors블록은 빌드와 프로비전 단계의 출력을 받을 포스트-프로세서들의 체인을 하나 이상 정의할 수 있게 해 줘요.