v1.12로 업그레이드
v1.12로 업그레이드
이 주제는 Packer v1.12로 업그레이드할 때 고려할 사항을 설명해요. v1.12의 변경 사항에 대한 자세한 내용은 v1.12 릴리스 노트를 참고하세요.
출처: Packer 공식 문서
본문
개요 (Overview)
Packer를 설치한 패키지 관리자의 upgrade 명령을 사용하거나, 기존 바이너리를 다운로드해 교체해서 Packer를 업그레이드할 수 있어요. 방법은 Packer 설치 문서를 참고하세요.
1.11에서 업그레이드 (Upgrade from 1.11)
Packer 1.12의 주목할 만한 변경 사항은 다음으로 요약할 수 있어요:
- Packer/플러그인 통신을 위한 프로토콜 변경
- 데이터 소스(Data Sources)와 로컬(Locals)을 위한 방향성 비순환 그래프(Directed Acyclic Graph, DAG) 도입
참고: 이들은 변경을 깨뜨리는(breaking) 변경이 아니에요. 템플릿은 그대로 계속 동작할 거예요.
프로토콜 변경 (Protocol changes)
초기화할 때 Packer는 이제 플러그인과 통신하기 위한 두 가지 프로토콜 중 하나를 선택할 수 있어요: gob(레거시)와 protobuf/msgpack이에요.
protobuf/msgpack 프로토콜은 이번 릴리스 이후 표준 방식이 될 거예요. 하지만 역호환성을 깨뜨리지 않기 위해, Packer는 다음 조건이 모두 참일 때만 이 프로토콜을 선택해요:
- 빌드의 모든 플러그인 후보가 새 프로토콜을 지원할 때
- Packer가 그 프로토콜을 지원할 때
이것은 Packer 내부 변경으로, 여러분에게는 완전히 투명해야 해요. 하지만 직렬화 오류 같은 Packer/플러그인 통신 오류가 보이기 시작하면 저희에게 보고해 주세요. 나중 버전에서 고칠 수 있도록요. PACKER_FORCE_GOB 환경 변수를 설정하면 Packer와 플러그인이 통신에 레거시 직렬화 형식을 강제로 사용하도록 할 수 있어요.
예: export PACKER_FORCE_GOB=1은 직렬화에 gob을 강제로 사용하게 해요.
데이터 소스와 로컬 DAG 지원 (Data Source and Locals DAG support)
데이터 소스와 로컬을 정의하는 방식에 더 많은 유연성을 주기 위해, 우리는 이런 컴포넌트의 평가 스케줄링에 그래프 기반 접근 방식을 도입했어요. 이 변경으로 데이터 소스에서 로컬 변수를 사용할 수 있고, 그 반대도 가능해요. 엄격한 평가 순서에 묶이지 않아요.
템플릿이 이전 Packer 버전에서 동작했다면 이 변경은 투명할 거예요. 하지만 데이터 소스나 로컬에서 오류(보통 알 수 없는 값이나 다른 의존성 문제로 인한)가 발생한다면 저희에게 보고해 주세요. 나중 버전에서 고칠 수 있도록요.
--use-sequential-evaluation 커맨드 라인 옵션을 사용하면 Packer가 v1.12.0 이전에 사용하던 평가 스케줄러로 되돌릴 수 있어요.
예: packer build --use-sequential-evaluation <TEMPLATE>는 Packer가 순차 평가 방식을 강제로 사용하게 해요.