Overview
오늘은 OpenStack Mistral에 대해 알아보겠다.
OpenStack Mistral은 OpenStack 서비스와 외부 시스템을 대상으로 다양한 작업을 자동화할 수 있는 Workflow 서비스이다.
여러 개의 작업(Task)을 조합해 하나의 흐름(Workflow)으로 정의하고, 이를 실행 및 모니터링할 수 있다.

📅 관련 글
2022.05.11 - [Openstack] - Openstack이란?
2022.07.29 - [Openstack] - Openstack Nova란?
2022.08.08 - [Openstack] - Openstack Neutron이란? (network)
2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?
2022.08.08 - [Openstack] - Openstack Glance란? (image)
2022.08.08 - [Openstack] - Openstack Keystone이란? (identity)
2022.08.08 - [Openstack] - Openstack horizon이란? (dashboard)
2022.08.09 - [Openstack] - Openstack Cinder/Swift란? (block storage/object storage)
2025.02.27 - [Openstack] - OpenStack Heat란? (Orchestration)
2025.02.27 - [Openstack] - OpenStack Ceilometer란? (Telemetry & Monitoring)
Mistral이란?
Mistral은 OpenStack 환경에서 자동화 작업(Workflow)을 정의하고 실행하는 서비스다. VM 생성, 네트워크 설정, 이미지 업로드 등 OpenStack 내 작업뿐만 아니라, 외부 API 호출, 서버 스크립트 실행 같은 비-OpenStack 작업도 함께 처리할 수 있다.
Mistral의 주요 특징
1️⃣ Task & Workflow 기반의 구조
- Task: 개별 작업 단위 (VM 생성, 이미지 등록 등)
- Workflow: 여러 Task를 묶어서 정의한 전체 작업 흐름
2️⃣ 다양한 실행 방식 지원
- 단순 직렬 실행 (Sequential)
- 병렬 실행 (Parallel)
- 조건부 실행 (Conditional)
3️⃣ OpenStack 및 외부 시스템 연동 가능
- Nova, Neutron, Cinder 등 OpenStack 서비스와 직접 연동
- REST API 호출 및 Shell 스크립트 실행 가능
4️⃣ 상태 관리 및 모니터링 제공
- 각 Workflow 및 Task의 상태 조회 가능
- 성공/실패 이력 관리 및 재시도 지원
5️⃣ YAML 기반 정의
- 간단한 YAML 파일로 Workflow 정의
- 사람이 읽기 쉽고, Git 등으로 형상 관리 가능
Mistral의 아키텍처 구성
주요 컴포넌트
구성 요소 | 설명 |
Mistral API | Workflow 등록, 실행 및 상태 조회 API 제공 |
Mistral Engine | Workflow의 실제 실행 담당 |
Mistral Executor | 개별 Task 실행 담당 |
Mistral DB | Workflow 정의, 실행 이력 저장 |
Mistral 설정 및 사용 예시
1️⃣ Workflow 정의 예시
아래는 인스턴스를 생성하고, Floating IP를 연결하는 Workflow 예시다.
version: '2.0'
create_vm_workflow:
type: direct
input:
- instance_name
- image
- flavor
- network
tasks:
create_instance:
action: nova.servers_create
input:
name: <% $.instance_name %>
image: <% $.image %>
flavor: <% $.flavor %>
network: <% $.network %>
publish:
instance_id: <% $.create_instance.id %>
on-success:
- attach_floating_ip
attach_floating_ip:
action: neutron.floatingip_associate
input:
server_id: <% $.instance_id %>
floatingip_id: <FIP_ID>
2️⃣ Workflow 등록
openstack workflow create create_vm_workflow.yaml
3️⃣ Workflow 실행
openstack workflow execution create create_vm_workflow \\
-f value -c id \\
-i instance_name="my-vm" \\
-i image="ubuntu-20.04" \\
-i flavor="m1.small" \\
-i network="public"
4️⃣ 실행 결과 확인
openstack workflow execution show <execution_id>
Mistral vs. Heat 비교
비교 항목 | Mistral (Workflow) | Heat (Orchestration) |
주요 목적 | 작업 자동화 및 연동 | 인프라 배포 |
정의 포맷 | YAML (Workflow DSL) | YAML (HOT Template) |
실행 대상 | OpenStack + 외부 시스템 | OpenStack 리소스 |
상태 관리 | Task별 상세 상태 관리 | 리소스 상태 관리 |
복잡한 로직 처리 | 지원 (조건/반복 등) | 제한적 |
Mistral 활용 사례
시나리오 | 설명 |
신규 서비스 프로비저닝 | VM 생성 → 네트워크 구성 → 보안그룹 설정 → 모니터링 설정까지 Full 자동화 |
장애 대응 자동화 | 특정 알람 발생 시, 원인 진단 후 자동 복구 (Self Healing) |
외부 시스템 연동 | OpenStack 리소스 생성 후, CMDB 업데이트 및 외부 API 호출까지 연계 |
⚠️ Mistral 주의점 및 한계
항목 | 내용 |
성능 | Task 수가 매우 많거나, Workflow 체인이 길면 실행 속도 저하 가능 |
복잡도 | 너무 복잡한 로직은 관리 어려움 (Workflow 분할 추천) |
장기 실행 작업 | 몇 시간 이상 걸리는 작업은 실패할 가능성 증가 (Timeout 설정 필요) |
Operator 경험 필요 | 단순 GUI 기반 자동화 도구와 달리, YAML 작성 및 디버깅 경험 필요 |
결론
- Mistral은 OpenStack 환경에서 자동화 및 작업 연동을 담당하는 강력한 Workflow 서비스이다.
- 특히 OpenStack 서비스 간 연동은 물론, 외부 API나 서버 작업까지 통합 관리할 수 있어
- 운영 자동화와 CI/CD 파이프라인 구성 등 다양한 활용이 가능하다.
- 주요 활용 사례:
- 반복적인 운영 작업 자동화
- OpenStack 리소스 생성 후 추가 설정 자동화
- OpenStack 외부 시스템과 연계 작업 구성
- 장애 대응 자동화 시나리오 구성
Reference
- https://docs.openstack.org/mistral/latest/
- https://github.com/openstack/mistral
- https://docs.openstack.org/api-ref/workflow/
- https://wiki.openstack.org/wiki/Mistral/Design
'Openstack' 카테고리의 다른 글
OpenStack Magnum이란? (Container Orchestration) (0) | 2025.03.27 |
---|---|
OpenStack Ceilometer란? (Telemetry & Monitoring) (0) | 2025.03.05 |
OpenStack Heat란? (Orchestration) (0) | 2025.02.27 |
Openstack Cinder/Swift란? (block storage/object storage) (0) | 2022.08.09 |
Openstack horizon이란? (dashboard) (0) | 2022.08.08 |