Packer 구성하기

Packer 구성하기 (Configure Packer)

이 글에서는 Packer를 구성하는 방법을 설명해요. 기본 구성은 시작하는 법을 배우기에 적합하지만, Packer에 더 익숙해지면 이 글을 지침으로 참고해야 해요.

출처: Packer 공식 문서

본문

개요 (Overview)

구성 파일에서 Packer 전용 환경 변수를 설정하면 Packer 동작을 전역적으로 구성할 수 있어요. 그 구성을 적용하려면 구성 파일을 Packer 구성 디렉터리에 설치해요. 구성 디렉터리 아래의 plugins 하위 디렉터리에 플러그인 파일과 해당 SHA256SUM 파일도 설치할 수 있어요. 지침은 플러그인 설치를 참고해 주세요.

JSON 구성 파일로 Packer 설정을 정의해 실행 경로에 추가할 수도 있어요. 다만 이 구성 방법은 더 이상 사용되지 않아요(deprecated).

구성 파일 설치 (Install a configuration file)

내부 구성 파일을 Packer의 config 디렉터리에 넣을 수 있어요. Packer는 구성 파일을 위해 다음 경로를 확인해요:

OS Path Notes
Unix ${HOME}/.config/packer/ Packer는 기본적으로 XDG 기본 디렉터리 규격을 따르므로, PACKER_CONFIG_DIR 환경 변수가 설정되지 않거나 비어 있으면 기본 디렉터리로 $HOME/.config/packer를 사용해요. PACKER_CONFIG_DIR 변수가 설정되거나 설치가 레거시 .packer.d 스타일 디렉터리(예: $HOME/.packer.d/)를 쓰면 Packer는 XDG 규격을 무시해요. 추가 정보는 XDG 규격을 참고해 주세요.
Windows %APPDATA%\packer.d\

예시 (Examples)

  • Unix: $PACKER_CONFIG_DIR가 /home/packer로 설정되어 있다면 구성 디렉터리는 /home/packer/.packer.d/예요. Packer는 다른 값은 확인하지 않아요.
  • Windows: PACKER_CONFIG_DIR가 C:/로 설정되어 있다면 구성 디렉터리는 C:/packer.d/예요. Packer는 다른 값은 확인하지 않아요.

JSON 구성 파일 설치 (Install a JSON configuration file)

이 설치 방법은 1.7부터 더 이상 사용되지 않아요. 대신 HCL2 required_plugins 블록으로 Packer가 플러그인을 설치하는 방식을 구성해 주세요.

JSON 파일을 사용해 Packer의 핵심 설정을 지정할 수 있어요. Packer는 구성 파일을 위해 다음 경로를 확인해요:

Unix Windows
${PACKER_CONFIG} %PACKER_CONFIG%
${HOME}/.packerconfig %APPDATA%\packer.config\

JSON 구성 파일 레퍼런스 (JSON configuration file reference)

기본 JSON을 사용해 파일을 구성해요. 핵심 구성 파일의 구성 매개변수를 지정할 수 있어요. 모든 매개변수는 선택 사항이에요. 모두 기본값이 있으므로 어떤 것도 필수가 아니에요.

  • plugin_min_port: Packer가 플러그인과 통신하는 데 사용할 수 있는 가장 낮은 포트를 지정하는 숫자. Packer는 로컬 호스트에서 TCP 또는 Unix 소켓으로 플러그인과 통신해요. 기본값은 10000이에요. 단일 실행에서 Packer가 최소 25개 포트에 접근할 수 있도록 plugin_min_port와 plugin_max_port 사이에 넓은 범위를 설정하는 걸 권장해요.
  • plugin_max_port: Packer가 플러그인과 통신하는 데 사용할 수 있는 가장 높은 포트를 지정하는 숫자. Packer는 로컬 Unix 호스트에서 TCP 연결로 플러그인과 통신해요. 기본값은 25000이에요. 단일 실행에서 Packer가 최소 25개 포트에 접근할 수 있도록 plugin_min_port와 plugin_max_port 사이에 넓은 범위를 설정하는 걸 권장해요.

packer init 명령어는 플러그인을 설치할 때 JSON 구성 설정보다 우선해요.

캐시 디렉터리 구성 (Configure the cache directory)

Packer는 대용량 파일 다운로드와 대용량 파일 다운로드 관련 물류를 위해 캐시 디렉터리를 사용해요. 기본적으로 Packer는 현재 디렉터리의 .packer_cache 폴더에 파일을 캐시해요. PACKER_CACHE_DIR 환경 변수로 캐시 디렉터리를 구성할 수 있어요. 자세한 내용은 PACKER_CACHE_DIR을 참고해 주세요.

여러 빌드가 비슷한 작업을 수행한다면 빌드 전체에서 동일한 Packer 캐시 디렉터리를 사용하는 걸 권장해요. ISO 같은 대용량 파일을 여러 번 다운로드하는 걸 피하기 위해서죠.

구성 레퍼런스 (Configuration reference)

Packer는 다양한 환경 변수를 사용해요. 각 변수의 목록과 설명은 아래와 같아요:

  • PACKER_CACHE_DIR - Packer 캐시의 위치. 기본값은 ./packer_cache/예요. 상대 경로를 사용할 수 있어요. 일부 플러그인은 ISO 같은 대용량 파일을 캐시 디렉터리에 캐시할 수 있어요.

  • PACKER_CONFIG - 핵심 구성 파일의 위치. 구성 파일의 형식은 기본 JSON이에요. Packer의 구성 파일을 참고해 주세요.

  • PACKER_CONFIG_DIR - Packer 홈 디렉터리의 위치. 자세한 내용은 Packer의 홈 디렉터리를 참고해 주세요.

  • PACKER_GETTER_READ_TIMEOUT - packer 플러그인이 ISO를 가져오려고 할 때의 타임아웃을 재정의해요. 기본값은 30m이에요. 기간 접미사가 붙은 문자열로 지정해요. 이 변수와 호환되려면 플러그인이 SDK v0.6.0 이상으로 빌드되어야 해요.

  • PACKER_GITHUB_API_TOKEN - HCL2 템플릿에서 Packer init을 사용할 때 Packer는 GitHub의 공개 API를 질의하는데, 이 API에는 속도 제한(rate-limit)이 있어요. PACKER_GITHUB_API_TOKEN 환경 변수에 GitHub 토큰을 설정하면 그 제한을 높일 수 있어요.

  • PACKER_LOG - 이 값을 ""(빈 문자열)나 "0"이 아닌 어떤 값으로든 설정하면 로거가 활성화돼요. 디버깅 페이지를 참고해 주세요.

  • PACKER_LOG_PATH - 로그 파일의 위치. 참고: 어떤 로깅이든 발생하려면 PACKER_LOG가 설정되어 있어야 해요. 디버깅 페이지를 참고해 주세요.

  • PACKER_NO_COLOR - 이 값을 어떤 값으로든 설정하면 터미널에서 색상이 비활성화돼요.

  • PACKER_PLUGIN_MAX_PORT - Packer가 플러그인과 통신하는 데 사용하는 최대 포트. 플러그인 통신이 로컬 호스트에서 TCP 연결로 이루어지기 때문이에요. 기본값은 25,000이에요. Packer의 구성 파일로도 설정할 수 있는데, 자세한 내용은 구성 파일 구성 레퍼런스를 참고해 주세요.

  • PACKER_PLUGIN_MIN_PORT - Packer가 플러그인과 통신하는 데 사용하는 최소 포트. 플러그인 통신이 로컬 호스트에서 TCP 연결로 이루어지기 때문이에요. 기본값은 10,000이에요. Packer의 구성 파일로도 설정할 수 있는데, 자세한 내용은 구성 파일 구성 레퍼런스를 참고해 주세요.

  • PACKER_PLUGIN_PATH - packer 플러그인을 찾기 위한 경로 변수. 정의된 경우 플러그인 발견에서 PACKER_CONFIG_DIR/plugins보다 우선해요. 플러그인 설치에는 TMPDIR 아래의 임시 파일에 대한 접근이 필요해요. 시스템의 임시 디렉터리가 쓰기 불가능하거나 실행 불가능하다면, TMPDIR로 Packer가 사용하는 임시 파일 저장소의 위치를 재정의해 주세요.

  • CHECKPOINT_DISABLE - Packer를 호출할 때 Packer의 새 버전을 찾기 위해 checkpoint.hashicorp.com에 호출하는 경우가 있어요. 보안이나 개인정보를 위해 이를 비활성화하려면 이 환경 변수를 1로 설정하면 돼요.

  • TMPDIR(Unix) / TMP, TEMP, USERPROFILE(Windows) - 임시 파일 디렉터리를 지정해요(Linux/Unix에서는 /tmp, Windows Vista 이상에서는 %USERPROFILE%\AppData\Local\Temp가 기본값). 기본 임시 디렉터리가 쓰기 불가능하거나 실행 불가능한 시스템에서는 이 설정을 바꿔야 할 수 있어요.