Ansible의 openstack.cloud Collection을 사용하여 OpenStack VM 생성에 필요한 Glance Image, Nova Flavor, Neutron Private Network와 Subnet을 코드로 반복 생성하는 자동화 구성이다.
OpenStack 리소스는 Horizon이나 OpenStack CLI를 통해 수동으로 생성할 수 있다.
하지만 프로젝트의 최종 목표는 다음과 같다.
부하 증가 감지
→ OpenStack Worker VM 자동 생성
→ Docker 및 네트워크 초기화
→ Docker Swarm Worker 자동 가입
→ 컨테이너 서비스 확장
이 구조에서는 사람이 Horizon에서 매번 이미지, Flavor, 네트워크를 직접 선택할 수 없다.
따라서 VM 생성에 필요한 기반 리소스를 Ansible Playbook으로 정의하고, 언제든지 같은 환경을 재현할 수 있도록 구성하였다.
| 구분 | Horizon | Ansible |
|---|---|---|
| 작업 방식 | 웹 화면에서 직접 클릭 | Playbook 실행 |
| 반복성 | 사람이 매번 반복 | 자동 반복 |
| 설정 일관성 | 실수 가능 | 코드에 정의된 값 사용 |
| 재현성 | 낮음 | 높음 |
| 자동 확장 연동 | 어려움 | 가능 |
| 주요 용도 | 조회, 확인, 장애 분석 | 생성, 변경, 자동화 |
Horizon은 자동화를 대체하는 도구가 아니라, Ansible이 생성한 결과를 확인하는 관리 화면으로 사용한다.
현재 bootstrap-cloud.yml을 통해 다음 OpenStack 리소스를 자동으로 관리한다.
bootstrap-cloud.yml
├─ Glance Image 등록
├─ Nova Flavor 생성
├─ Neutron Private Network 생성
└─ Neutron Private Subnet 생성
현재 구현된 리소스는 다음과 같다.
| OpenStack 서비스 | 리소스 | 현재 설정 |
|---|---|---|
| Glance | VM 부팅 이미지 | ubuntu-24.04-cloud |
| Nova | VM Flavor | flavor_name 변수에 정의 |
| Neutron | Private Network | clover-private |
| Neutron | Private Subnet | clover-private-subnet |
| Neutron | Subnet CIDR | 192.168.21.0/24 |
| Neutron | VM IP 할당 범위 | 192.168.21.60 ~ 192.168.21.250 |
현재는 아직 다음 리소스를 자동화하지 않았다.
Security Group
SSH Keypair
External Provider Network
Neutron Router
SNAT
Floating IP
VM Instance 생성
Docker 설치
Docker Hub Image Pull
Docker Swarm 가입