v1.11로 업그레이드하기

v1.11로 업그레이드하기 (Upgrade to v1.11)

이 주제는 Packer v1.11에 대한 업그레이드 고려 사항을 설명해요. v1.11의 변경 사항에 대한 자세한 내용은 v1.11 릴리스 노트를 참고하세요.

출처: Packer 공식 문서

본문

개요 (Overview)

Packer를 설치한 패키지 매니저의 upgrade 명령어를 사용하거나, 기존 바이너리를 다운로드해 교체해서 Packer를 업그레이드할 수 있어요. 자세한 내용은 Packer 설치하기를 참고하세요.

1.10에서 업그레이드하기 (Upgrade from 1.10)

v1.10과 v1.11 사이의 변경으로 인해 다음 조치를 취하세요.

템플릿 검토 (Review templates)

Packer v1.11은 기존 v1.10 템플릿을 지원해요. 필요한 조치는 없어요.

플러그인 관리 프로세스 검토 (Review plugin management processes)

Packer가 플러그인을 관리하는 방식에 다음과 같은 변경을 가했기 때문에, 플러그인 관리 프로세스를 검토하고 그에 맞게 변경해야 해요.

  • 단일 컴포넌트(single-component) 플러그인은 더 이상 지원되지 않아요. 의존성을 멀티 컴포넌트 플러그인으로 업데이트하세요. 예를 들어 packer-builder-hashicups-coffee를 packer-plugin-hashicups로 업데이트해요.
  • Packer는 모든 플러그인이 플러그인 디렉터리에 설치되어야 해요. 플러그인은 기대되는 소스와 일치하는 계층 구조를 따라야 해요. 플러그인은 packer-plugin-<name> 명명 규칙을 따라야 해요. 플러그인에는 SHA256SUM 파일이 함께 있어야 해요. Packer의 플러그인 디렉터리 바깥에서 플러그인 설치를 관리한다면, 이러한 요구사항을 충족하도록 설치 프로세스를 수정하세요. 자세한 내용은 플러그인 설치하기를 참고하세요.
  • Packer는 Packer HCL2 템플릿에서 설치된 플러그인에 대해 시맨틱 버저닝을 요구해요. 자세한 내용은 Packer 플러그인 설치 문서의 요구사항(Requirements)을 참고하세요.
  • 빌드에서 플러그인의 -dev 프리릴리스 버전을 packer plugins install --path 명령어로 사용할 수 있어요. 개발 중인 플러그인 사용하기를 참고하세요.
  • packer plugins install --path 명령어를 사용해 비-Github 호스트에서 플러그인을 설치할 수 있어요. 이 명령어는 플러그인을 Packer 플러그인 디렉터리에 설치하고, 제공된 소스와 일치하는 파일 계층을 생성해요. 그 결과 Packer는 required_plugins 블록에 지정된 비-Github 소스를 발견할 수 있게 돼요. 원한다면 그 플러그인들에 버전 제약을 추가할 수도 있어요.

검증 목적으로 required_plugins에 비-GitHub 소스를 추가할 수는 있지만, 원격 설치는 여전히 Github 소스 플러그인으로 제한돼요. 자세한 내용은 required_plugins 레퍼런스 문서에서 플러그인 소스 정의하기를 참고하세요.

문제 해결 (Troubleshooting)

이 섹션은 업그레이드 후 겪을 수 있는 잠재적 문제에 대한 안내를 제공해요.

누락된 플러그인 오류 (Missing plugins error)

업그레이드 후 Packer가 하나 이상의 플러그인이 누락됐다고 보고할 수 있어요. 이는 더 이상 지원되지 않는 다음 플러그인 설치 방법 중 하나를 사용했을 때 발생할 수 있어요.

  • Packer가 호출된 디렉터리에 플러그인을 설치했다.
  • Packer 바이너리 옆에 플러그인을 설치했다.
  • PACKER_PLUGIN_PATH 디렉터리의 루트 아래에 플러그인을 설치했다.

누락된 컴포넌트가 있으면, 플러그인 설치하기에 설명된 대로 각각의 플러그인을 재설치해야 할 수 있어요.

required_plugins 메시지 사용하기 (Use required_plugins message)

Packer는 템플릿의 required_plugins 블록에 플러그인을 지정하고 packer init 명령어로 설치하라는 메시지를 출력할 수 있어요. 이것이 플러그인을 관리하는 선호되는 방법이지만 필수는 아니에요. packer plugins install 명령어로 플러그인을 수동으로 설치할 수도 있어요. 플러그인 설치하기를 참고하세요.

플러그인에 대한 원격 접근 차단 (Blocked remote access to plugin)

방화벽 구성이나 GitHub 차단 같은 이유로 원격으로 플러그인을 설치할 수 없다면, 로컬 설치 방법을 사용할 수 있어요. 플러그인 설치하기를 참고하세요.

레거시 JSON 템플릿에서 플러그인 설치 (Install plugins from legacy JSON template)

required_plugins 블록은 HCL 템플릿 안에서만 사용할 수 있어요. 레거시 JSON 사용자는 packer plugins install을 사용해야 해요.

네임스페이스 디렉터리 바깥에 플러그인 설치하기 (Installing plugins outside of namespace directories)

Packer는 단일 루트 디렉터리 아래에 packer-plugin-<name> 이름으로 플러그인을 설치하는 것을 더 이상 지원하지 않아요. Packer CLI 명령어로 플러그인을 설치하고, PACKER_PLUGIN_PATH 환경 변수를 커스텀 디렉터리를 가리키도록 설정해 그 디렉터리가 어떻게 플러그인을 관리할지 커스터마이즈할 수는 있어요. 설정되면 Packer는 그 디렉터리 아래에 플러그인의 소스와 일치하는 하위 디렉터리를 자동으로 생성해요.

레퍼런스 (Reference)

Packer CLI로 플러그인을 설치하는 것에 대한 추가 정보는 다음 주제를 참고하세요.

  • packer init
  • packer plugins install

더 알아보기 (Learn more)