서버 프로비저닝 (IaaS + Ansible)
IaaS에서 서 버를 생성하고 Ansible로 표준 상태까지 자동 셋업하는 전체 과정입니다. 아래 Phase 1은 Vultr를 예시로 하지만, DigitalOcean / Linode / Hetzner / AWS EC2 등 어떤 IaaS에서도 동일한 흐름이 적용됩니다. 핵심은 "Ubuntu 24.04 LTS 서버 + 운영자 SSH 공개키 + 초기 IP"만 확보하면 Phase 2 이후는 완전히 동일합니다.
사전 요구사항
| 항목 | 필수 여부 | 비고 |
|---|---|---|
| 로컬에 Ansible 2.15+ 설치 | ✅ | pip install ansible 또는 apt install ansible |
| SSH 키 쌍 (운영자용) | ✅ | ssh-keygen -t ed25519 |
| IaaS 계정 + SSH 공개키 등록 | ✅ | 각 IaaS Dashboard의 SSH Keys 메뉴 (Vultr / DigitalOcean / Linode 등 공통) |
| Tailscale 계정 + pre-auth key | ✅ | Admin Console → Settings → Keys → Auth keys |
| ansible-vault 비밀번호 | ✅ | Secret 관리용 |
Phase 1: IaaS 서버 생성 (Vultr 예시)
다른 IaaS를 사용하는 경우
아래는 Vultr 대시보드 기준 예시입니다. DigitalOcean, Linode, Hetzner, AWS EC2 등에서도 동일한 핵심 4가지만 준비하면 됩니다:
- Ubuntu 24.04 LTS x64 이미지
- 운영자 SSH 공개키 등록
- 역할 기반 hostname (예:
msk-app-01) - 생성된 공인 IP 주소 확보
이후 Phase 2~5는 IaaS와 무관하게 모두 같습니다.
Vultr Dashboard에서 (예시)
- Deploy New Server 클릭
- 설정:
- Server Type: Cloud Compute (또는 High Performance)
- Location: Tokyo/Seoul/Singapore 등 가까운 리전
- Server Image: Ubuntu 24.04 LTS x64
- Server Size: 최소 2GB RAM 이상 권장 (앱에 따라 조정)
- SSH Keys: 사전 등록한 운영자 공개키 선택 (필수)
- Firewall Group: 기본 (Ansible이 UFW로 재구성)
- Hostname: 역할 기반 (예:
msk-npm-01,msk-app-quant)
- Deploy Now
- 생성 완료 후 IP 주소 복사
cloud-init 자동화 (선택)
대부분의 IaaS(Vultr, DigitalOcean, AWS EC2 등)는 User Data(cloud-init)를 지원합니다. 첫 부팅 시 기본 패키지 설치까지 자동화하려면:
#cloud-config
package_update: true
package_upgrade: true
packages:
- curl
- git
단, 복잡한 설정은 Ansible이 담당하므로 cloud-init은 최소만 두는 것이 관리 단순화 측면에서 좋습니다.
Phase 2: Inventory 등록
workspace/_infra/ansible/inventory/hosts.ini에 신규 서버 추가:
# Phase 1: 정적 inventory
[npm_servers]
msk-npm-01 ansible_host=141.164.xx.xx ansible_user=root
[app_servers]
msk-app-quant ansible_host=64.176.xx.xx
[db_servers]
msk-db-01 ansible_host=108.61.xx.xx
[monitoring_servers]
msk-monitor-01 ansible_host=95.179.xx.xx
[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_private_key_file=~/.ssh/id_ed25519