강제 프로비저너(Enforced Provisioners) 사용하기
강제 프로비저너(Enforced Provisioners) 사용하기
강제 프로비저너를 사용하면 재사용 가능한 Packer 프로비저너 정의를 만들고 이를 하나 이상의 HCP Packer 버킷에 적용할 수 있어요. HCP Packer 버킷에서 프로비저너를 강제하면 Packer가 provisioner 블록을 빌드에 자동으로 주입해요. 강제 프로비저너를 사용해 보안 강화, 에이전트 설치, 규정 준수 단계 같은 동일한 프로비저닝 로직을 HCP Packer 버킷에서 일관되게 실행할 수 있어요.
참고: 강제 프로비저너는 베타로 제공되고 있어요. 프로덕션이 아닌 버킷에서 먼저 이 기능을 테스트할 것을 권장해요.
출처: 문서
본문
개요
HCP Packer 버킷의 모든 빌드에 동일한 프로비저닝 집합이 포함되도록 강제 프로비저너를 만들 수 있어요. 강제 프로비저너를 만들고 HCP Packer 버킷에 적용하려면 다음 단계를 완료해 주세요:
- HCP Packer 사용자 인터페이스에서 새 강제 프로비저너와 정의 버전을 만들어요. 자세한 내용은 강제 프로비저너 만들기를 참고해 주세요.
- 강제 프로비저너를 하나 이상의 HCP Packer 버킷에 연결해요. 자세한 내용은 강제 프로비저너 연결하기를 참고해 주세요.
한 번에 버킷에 강제 프로비저너의 버전 하나만 연결할 수 있어요. 기존 강제 프로비저너를 업데이트하고 버킷에 연결하려면 다음 단계를 완료해 주세요:
- 강제 프로비저너의 새 버전을 만들어요.
- 버킷에서 강제 프로비저너의 이전 버전을 연결 해제해요. 자세한 내용은 강제 프로비저너 연결 해제를 참고해 주세요.
- 강제 프로비저너의 새 버전을 버킷에 연결해요.
강제 프로비저너 버전을 삭제하려면 먼저 해당 버전에 연결된 모든 버킷을 연결 해제해야 해요.
요구사항
강제 프로비저너를 사용하려면 다음 요구사항을 충족해야 해요:
- 강제 프로비저너를 사용하려면 Standard 에디션 레지스트리가 필요해요. 레지스트리 등급을 보고 변경하는 방법은 Packer 레지스트리 관리를 참고해 주세요.
contributor역할이 있는 HCP 계정. 자세한 내용은 HCP Packer 권한 문서를 참고해 주세요.
강제 프로비저너 만들기
새 강제 프로비저너를 만들려면 다음 단계를 완료해 주세요:
- HCP 포털에 로그인하고 조직과 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
- 왼쪽 탐색 메뉴에서 Enforced Provisioners를 클릭해요.
- Create provisioner를 클릭해요.
- Provisioner Name 필드에 프로비저너에 부여할 이름을 입력해요.
- Provisioner template format으로 JSON 또는 HCL 중 하나를 선택해요.
- 선택 사항으로 프로비저너에 대한 Description을 입력해요.
- Next를 클릭해요.
- Version 필드에서 초기 강제 프로비저너 버전의 버전 라벨을 선택해요. 예:
v1.0.0. - 선택 사항으로, Labels 필드에 강제 프로비저너와 연결할 메타데이터를 라벨로 지정해요.
- Next를 클릭해요.
- Packer Template Code 텍스트 상자에 프로비저너 템플릿을 입력해요. 자세한 내용은 예시를 참고해 주세요.
- Save를 클릭해요.
프로비저너를 만든 후 새 리소스가 Enforced Provisioners 목록에 나타나고 첫 번째 버전이 세부 정보 보기에 나타나는지 확인해요. 강제 프로비저너를 만든 후에는 하나 이상의 HCP Packer 버킷에 연결할 수 있어요. 자세한 내용은 강제 프로비저너 연결하기를 참고해 주세요.
강제 프로비저너 연결하기
강제 프로비저너를 적용하려면 강제 프로비저너의 버전 하나를 하나 이상의 HCP Packer 버킷에 연결할 수 있어요. 같은 프로비저너의 여러 버전을 버킷에 연결할 수는 없어요. 새 강제 프로비저너 버전을 만들 때는 연결하려는 버킷을 먼저 프로비저너의 이전 버전에서 제거한 다음, 새 버전에 버킷을 연결해야 해요. 버킷에서 강제 프로비저너 버전을 연결 해제하는 방법은 강제 프로비저너 연결 해제를 참고해 주세요.
강제 프로비저너 버전을 연결하려면 다음 단계를 완료해 주세요:
- HCP 포털에 로그인하고 조직과 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
- 왼쪽 탐색 메뉴에서 Enforced Provisioners를 클릭해요.
- 연결하려는 프로비저너의 이름을 클릭해요.
- 연결하려는 버전 옆의 줄임표(...)를 클릭해요.
- Manage linked buckets를 클릭해요.
- 강제 프로비저너를 연결하려는 각 버킷의 이름을 입력해요.
- Apply Changes를 클릭해요.
강제 프로비저너를 연결한 후 해당 버전에 표시된 버킷 목록을 확인해 주세요.
강제 프로비저너 연결 해제하기
버킷에서 강제 프로비저너 버전을 연결 해제하려면 다음 단계를 완료해 주세요:
- HCP 포털에 로그인하고 조직과 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
- 왼쪽 탐색 메뉴에서 Enforced Provisioners를 클릭해요.
- 연결 해제하려는 강제 프로비저너 버전을 가진 프로비저너의 이름을 클릭해요.
- 연결하려는 버전 옆의 줄임표(...)를 클릭해요.
- Manage linked buckets를 클릭해요.
- 강제 프로비저너 버전에서 연결 해제하려는 버킷을 제거해요.
- Apply Changes를 클릭해요.
강제 프로비저너 버전 삭제하기
강제 프로비저너 버전을 삭제하려면 먼저 해당 버전에 현재 연결된 모든 버킷을 연결 해제해야 해요. 자세한 내용은 강제 프로비저너 연결 해제를 참고해 주세요.
강제 프로비저너의 개별 버전을 삭제하려면 다음 단계를 완료해 주세요:
- HCP 포털에 로그인하고 조직과 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
- 왼쪽 탐색 메뉴에서 Enforced Provisioners를 클릭해요.
- 삭제하려는 강제 프로비저너 버전을 가진 프로비저너의 이름을 클릭해요.
- 삭제하려는 버전 옆의 줄임표(...)를 클릭하고 Delete version을 클릭해요.
- Delete provisioner version을 클릭해 삭제를 확인해요.
강제 프로비저너 삭제하기
강제 프로비저너를 삭제하려면 먼저 프로비저너의 모든 버전에 연결된 모든 버킷을 연결 해제해야 해요. 자세한 내용은 강제 프로비저너 연결 해제를 참고해 주세요.
강제 프로비저너의 개별 버전을 삭제하려면 다음 단계를 완료해 주세요:
- HCP 포털에 로그인하고 조직과 프로젝트를 선택한 다음 Services 메뉴에서 Packer를 클릭해요.
- 왼쪽 탐색 메뉴에서 Enforced Provisioners를 클릭해요.
- 삭제하려는 프로비저너 옆의 줄임표(...)를 클릭하고 Delete Provisioner를 클릭해요.
- Delete provisioner를 클릭해 삭제를 확인해요.
예시
다음 예시는 강제 프로비저너를 만들 때 제공할 수 있는 구성을 보여 줘요. 다음 예시에서 강제 프로비저너에는 머신 이미지에 도구를 설치하고, 사용자를 만들고, 보안을 구성하는 세 개의 provisioner 블록이 있어요. 이 강제 프로비저너를 버킷에 연결하면 해당 버킷에 대해 만드는 모든 빌드가 이 세 개의 provisioner 블록을 실행해요.
provisioner "shell" {
inline = [
"apt-get update -y",
"apt-get install -y curl wget jq"
]
}
provisioner "shell" {
inline = [
"echo 'Creating app user...'",
"useradd -m -s /bin/bash appuser",
"mkdir -p /opt/app",
"chown appuser:appuser /opt/app"
]
}
provisioner "shell" {
inline = [
"echo 'Applying security hardening...'",
"echo 'net.ipv4.ip_forward = 0' >> /etc/sysctl.conf",
"echo 'Build complete!'"
]
}
{
"provisioner": [
{
"shell": {
"inline": [
"apt-get update -y",
"apt-get install -y curl wget jq"
]
}
},
{
"shell": {
"inline": [
"echo 'Creating app user...'",
"useradd -m -s /bin/bash appuser",
"mkdir -p /opt/app",
"chown appuser:appuser /opt/app"
]
}
},
{
"shell": {
"inline": [
"echo 'Applying security hardening...'",
"echo 'net.ipv4.ip_forward = 0' >> /etc/sysctl.conf",
"echo 'Build complete!'"
]
}
}
]
}
강제 프로비저너로 빌드 실행하기
빌드가 HCP Packer에 연결되고 활성 강제 프로비저너 연결이 있는 버킷을 대상으로 하면 Packer가 연결된 강제 프로비저너를 자동으로 적용해요.
경고: Packer는 같은 버킷에서 혼합 운영 체제 빌드를 지원해요. 그러나 연결된 강제 프로비저너는 버킷의 모든 빌드에 적용되므로, 버킷에 존재하는 모든 운영 체제와 호환되어야 해요. 예를 들어 버킷에 Ubuntu, Red Hat, Windows 이미지가 포함된 경우, Linux shell 프로비저너를 사용하는 연결된 강제 프로비저너는 Windows 빌드에서 실패해요. 이를 방지하려면 Linux와 Windows 이미지에 별도의 버킷을 사용하거나, 모든 대상 운영 체제에서 작동하는 프로비저너만 연결해 주세요.
참조하는 버킷에 강제 프로비저너 버전이 연결되어 있으면 Packer는 빌드 중에 해당 프로비저너를 자동으로 주입해요.
packer build 명령에서 -skip-enforcement 플래그를 사용해 그 빌드에 대해 버킷에 강제된 프로비저너를 우회할 수 있어요. 자세한 내용은 Packer build 명령 참조를 참고해 주세요.