배포 & 변경 관리¶
수동 배포¶
# 단일 호스트
inv deploy --hosts psi
# 다중 호스트
inv deploy --hosts psi,rho,tau,eta
inv deploy는 SSH를 통해 원격 호스트에서 nixos-rebuild switch를 실행합니다.
자동 업그레이드¶
모든 호스트에 자동 업그레이드가 설정되어 있습니다:
- 소스:
github:SBEE-lab/infra - 업그레이드 체크:
system.autoUpgrade가 주기적으로 최신 커밋을 가져와nixos-rebuild switch실행 - 재부팅 체크: 매월 마지막 토요일에
auto-reboot서비스가 커널 업데이트 여부를 확인 - 재부팅: 커널이 변경된 경우에만 24시간 후 자동 재부팅 (
shutdown -r +1440) - 지터: ±20분 (호스트별 재부팅 시점 분산)
사전 빌드 (Buildbot/Harmonia 캐시)¶
PR과 메인 브랜치 변경은 Buildbot이 빌드합니다. 빌드 결과는 psi의 /nix/store에 남고, Harmonia가 이 store를 내부 캐시로 제공합니다. 다른 호스트는 배포 시 http://10.100.0.2:5000 substituter에서 이미 빌드된 결과를 가져옵니다.
flowchart LR
pr["PR/메인 브랜치"] -- "Buildbot" --> psi["psi<br/>nix build"]
psi -- "/nix/store" --> harmonia["Harmonia<br/>10.100.0.2:5000"]
harmonia -- "substituter" --> rho["rho"]
harmonia -- "substituter" --> tau["tau"]
harmonia -- "substituter" --> eta["eta"]
admin["관리자"] -- "inv deploy" --> rho & tau & eta
일반적인 배포 흐름은 PR에서 Buildbot 통과 확인 → merge → 배포입니다.
배포 전 확인¶
# 로컬에서 단일 호스트 빌드 테스트
nix build .#nixosConfigurations.psi.config.system.build.toplevel
주요 invoke 명령어¶
| 명령어 | 설명 |
|---|---|
inv deploy --hosts <host> |
원격 배포 |
inv add-server --hostname <name> |
새 서버 추가 |
inv generate-ssh-cert <host> |
SSH 인증서 생성 |
inv generate-wireguard-key --hostname <host> |
WireGuard 키 생성 |
inv generate-password --user <name> |
비밀번호 해시 생성 |
inv expired-accounts |
만료 계정 확인 |