Skip to content

Pulumi Hetzner 상용 미구현 항목 — 구현 체크리스트

목적: pulumi-ansible-step1-step2-plan.md §1.6 상용 단계에서 정의한 항목 중 아직 prego-pulumi에 반영되지 않은 것의 구현 순서·체크리스트.
기준 코드: /Users/marco/prego-pulumi/__main__.py, config/region.py


요약

#항목기획 §우선순위비고
1상용 서버 타입 (CPX31 이상)1.6높음test_mode 아님일 때 cpx31 적용
2Backups 활성화 옵션1.6높음상용 모드에서 backups=True
3Hetzner Volume (20~50GB)1.6중간App/DB 데이터 분리
4Placement group (Spread)1.6중간App·DB 서로 다른 물리 호스트
5Cloud-init (user_data)1.6낮음선택: Docker 사전 설치 등
6Runbook 리소스 수·체크리스트 정리runbook문서§5.1, §5.2 현재 구조 반영

1. 상용 서버 타입 (CPX31 이상)

  • 설정 경로: __main__.pytest_mode가 False일 때 기본 server_type cpx31 적용.
  • Config: pulumi config set prego-pulumi:serverType cpx31 (또는 cpx41 등)로 지정 가능.
  • DB 서버: 동일 변수로 상용 시 cpx31 적용.
  • 참고: §1.7 — CPX31 기준 월 비용 예시 있음.

2. Backups 활성화 옵션

  • 설정: pulumi config set prego-pulumi:enableBackups true 또는 환경변수 PULUMI_ENABLE_BACKUPS=true.
  • 기본값: False (테스트 비용 절감).
  • App 서버·DB 서버 둘 다 동일 옵션 적용.

3. Hetzner Volume (20~50GB)

  • 리소스: hcloud.Volume App용·DB용 각 1개. pulumi config set prego-pulumi:volumeSizeGb 20 (기본 20, 20~50 범위). enableVolumes true로 활성화.
  • 부착: hcloud.VolumeAttachment로 각 서버에 automount=True 부착.
  • 마운트 경로: Ansible에서 처리. Pulumi는 생성·부착만.
  • 기본: enableVolumes 기본값 False(기존 스택 영향 없음). 상용에서 True 시 App 1개 + DB 1개 생성.

4. Placement group (Spread)

  • 리소스: hcloud.PlacementGroup prego-spread, type="spread".
  • 연결: App·DB 서버에 placement_group_id 전달. 테스트 모드에서는 비활성(enable_placement_group=False).
  • 설정: enablePlacementGroup 기본 True(상용). False로 끄기 가능.

5. Cloud-init (user_data)

  • 선택 사항: pulumi config set prego-pulumi:userData "..." 또는 PULUMI_USER_DATA. App·DB 서버 둘 다에 전달.
  • 예시: #cloud-config 또는 스크립트. Runbook §1.6 참고.
  • 주의: Ansible에서도 Docker 설치 시 중복 가능. Ansible 우선이면 userData 비워두기.

6. Runbook 업데이트

  • 파일: docs/runbook/pulumi-step1-hetzner-server.md
  • §5.1: 스택 리소스 문구 수정(Server×2, Firewall×2, DnsRecord, R2Bucket, PlacementGroup, Volume 등).
  • §5.2: prego-db-01, prego-db-fw 체크리스트 반영 완료.

구현 순서 제안

  1. 1 → 2: 상용 서버 타입 + Backups 옵션 (상용 전환 시 필수).
  2. 6: Runbook 정리 (배포·검증 시 혼동 방지).
  3. 3 → 4: Volume, Placement group (용량·가용성 요구 시).
  4. 5: Cloud-init은 필요 시에만.

Config 요약 (구현 반영)

Config key타입기본값비고
prego-pulumi:testModeboolfalsetrue 시 CAX11+hel1, 볼륨/배치 비활성
prego-pulumi:serverTypestringcpx31상용 기본
prego-pulumi:enableBackupsboolfalseApp·DB 둘 다
prego-pulumi:enableVolumesboolfalsetrue 시 Volume 2개 + Attachment
prego-pulumi:volumeSizeGbint2020~50, enableVolumes 시만
prego-pulumi:enablePlacementGroupbooltruefalse 시 Spread 미사용
prego-pulumi:userDatastringcloud-init (선택)

환경변수: PULUMI_ENABLE_BACKUPS, PULUMI_ENABLE_VOLUMES, PULUMI_VOLUME_SIZE_GB, PULUMI_USER_DATA 등 동일 이름으로 대체 가능.


문서 위치: docs/planning/pulumi-hetzner-production-todo.md

Help