일상 운영 시나리오
Ansible로 관리되는 서버에서 자주 수행하는 작업들의 명령 모음입니다.
계정(account) wrapper 사용
이 문서의 모든 명령은 <account>를 실제 계정명(예: self, customer-a)으로 바꿔서 실행합니다.
scripts/ansible-account.sh가 inventory, vault, roles_path를 계정별로 자동 주입하여 타 계정 사고를 방지합니다.
직접 ansible-playbook 호출은 디버깅 목적으로만 사용하고, 일상 운영은 wrapper를 통해 실행하세요.
시나리오 1: 신규 서버 추가
# 1. IaaS 대시보드/API에서 서버 생성 (Ubuntu 24.04, SSH 키 등록) — Vultr/DigitalOcean/Linode 등
# 2. Inventory에 추가 (해당 계정 폴더의 hosts.ini)
cat >> workspace/_infra/ansible-accounts/<account>/inventory/hosts.ini << 'EOF'
[app_servers]
msk-app-new ansible_host=64.176.xx.xx
EOF
# 3. Bootstrap (최초 1회, root로 접속)
cd workspace/_infra
scripts/ansible-account.sh <account> bootstrap --limit msk-app-new -u root
# 4. 표준 셋업 (deploy로)
scripts/ansible-account.sh <account> site --limit msk-app-new
# 5. 역할별 배포
scripts/ansible-account.sh <account> app --limit msk-app-new
소요 시간: 약 10~15분
시나리오 2: 전체 서버 보안 패치
# apt 보안 업데이트 (unattended-upgrades가 자동 실행하지만 수동 트리거)
ansible all -m apt -a "upgrade=safe update_cache=yes" --become
# 재부팅이 필요한 서버만 재부팅 (rolling)
ansible all -m reboot --become --serial 1 \
--extra-vars "reboot_timeout=300"
주의: 운영 중 서버는 --serial 1로 한 대씩 재부팅하여 다운타임 최소화.
시나리오 3: 특정 역할만 재설정
# NPM 서버들만 재구성
ansible-playbook playbooks/npm.yml --limit npm_servers
# 모든 서버의 Tailscale role만 재실행
ansible-playbook playbooks/site.yml --tags tailscale
# 특정 서버 + 특정 role
ansible-playbook playbooks/site.yml --limit msk-app-quant --tags docker