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가 기본값). 기본 임시 디렉터리가 쓰기 불가능하거나 실행 불가능한 시스템에서는 이 설정을 바꿔야 할 수 있어요.