packer validate 명령어 레퍼런스

packer validate 명령어 레퍼런스

packer validate Packer 명령어는 템플릿의 문법과 구성을 검증하는 데 사용돼요. 이 명령어는 성공하면 0의 종료 상태를, 실패하면 0이 아닌 종료 상태를 반환해요. 또한 템플릿이 검증되지 않으면 모든 오류 메시지가 출력돼요.

출처: Packer 공식 문서

본문

사용 예:

$ packer validate my-template.pkr.hcl
Template validation failed. Errors are shown below.

Errors validating build 'vmware'. 1 error(s) occurred:

* Either a path or inline script must be specified.

옵션 (Options)

  • -syntax-only - 템플릿의 문법만 점검해요. 구성은 검증되지 않아요.

  • -evaluate-datasources - 템플릿을 검증할 때 모든 데이터 소스를 평가해요. 이 옵션은 HCL2 템플릿에서만 유효해요. JSON 템플릿은 데이터 소스가 없으므로 이 옵션은 무시돼요.

경고: 데이터 소스는 데이터를 가져오기 위해 외부 서비스에 의존할 수 있어요. 접촉하는 서비스가 작업당 과금을 한다면 검증 시 일부 비용이 발생할 수 있어요.

  • -except=foo,bar,baz - 쉼표로 구분된 이름을 가진 것들을 제외한 모든 빌드를 검증해요. 레거시 JSON 템플릿에서는 구성 안에 특정 name 속성이 지정되지 않는 한 빌드 이름은 builder의 타입(예: docker, amazon-ebs, virtualbox-iso)을 기본값으로 해요. HCL2 템플릿에서 "name"은 source 블록의 "name" 라벨이에요(빌드 안의 source 정의가 "name" 구성 옵션을 추가하지 않는 한).

  • -no-warn-undeclared-var - 변수 정의 파일에 선언되지 않은 변수에 대한 변수 할당이 있을 때 경고를 잠재워요. 주어진 HCL2 템플릿에 비해 사용하지 않는 변수가 많이 담긴 var-file을 쓸 때 이런 일이 생길 수 있어요. HCL2 템플릿에서 var-file에 변수 값을 정의하는 것만으로는 Packer가 동작하기에 충분하지 않아요. 템플릿 파일 pkr.hcl 안에 그 변수에 대한 variable 블록 정의도 있어야 하거든요. 기본적으로 packer validate는 var-file에 선언되지 않은 변수가 하나 이상 있어도 경고해요.

  • -only=foo,bar,baz - 주어진 쉼표로 구분된 이름을 가진 빌드만 검증해요. 레거시 JSON 템플릿에서는 구성 안에 특정 name 속성이 지정되지 않는 한 빌드 이름은 builder의 타입(예: docker, amazon-ebs, virtualbox-iso)을 기본값으로 해요. HCL2 템플릿에서 "name"은 source 블록의 "name" 라벨이에요(빌드 안의 source 정의가 "name" 구성 옵션을 추가하지 않는 한).

  • -machine-readable 모든 출력을 stdout에서 기계가 읽을 수 있게 설정해요. 활성화된 경우 로깅은 계속 stderr에 나타나요.

  • -var - Packer 템플릿에 변수를 설정해요. 이 옵션은 여러 번 사용할 수 있어요. 빌드의 버전 번호를 설정할 때 유용해요.

  • -var-file - 파일에서 템플릿 변수를 설정해요.