📘 OpenStack CLI 치트시트 (Cheat Sheet)
OpenStack 운영 및 관리를 위한 필수 명령어 모음입니다.
범례:
<값>: 필수 입력 값 (예: ID, 이름)[옵션]: 선택 입력 값
0. 환경 설정 (필수)
명령어를 실행하기 전, 반드시 인증 정보를 로드해야 합니다.
1. 인스턴스 (Server) 관리
가상머신(VM)의 생명주기를 관리합니다.
| 작업 | 명령어 | 설명 |
|---|---|---|
| 목록 조회 | openstack server list --all-projects |
모든 프로젝트의 VM 목록 조회 |
| 상세 조회 | openstack server show <인스턴스_ID> |
특정 VM의 상세 정보(IP, 호스트, 상태) 조회 |
| 로그 확인 | openstack console log show <인스턴스_ID> |
부팅 로그(Console Log) 확인 (디버깅용) |
| 콘솔 URL | openstack console url show <인스턴스_ID> |
웹 VNC 접속 주소 확인 |
| 생성 | openstack server create --image <이미지> --flavor <플레이버> --network <네트워크> <VM이름> |
인스턴스 생성 |
| 삭제 | openstack server delete <인스턴스_ID> |
인스턴스 삭제 |
⚡ 전원 관리 (중요)
# 부드러운 재부팅 (OS 레벨 재부팅)
openstack server reboot <인스턴스_ID>
# 강제 재부팅 (전원 껐다 켜기 - GPU 오류 시 필수)
openstack server reboot --hard <인스턴스_ID>
# 인스턴스 일시 정지 해제 (Paused 상태 풀기)
openstack server unpause <인스턴스_ID>
2. 이미지 (Image) 관리
Glance 서비스 관련 명령어입니다.
| 작업 | 명령어 |
|---|---|
| 목록 조회 | openstack image list |
| 상세 조회 | openstack image show <이미지_ID> |
| 이미지 등록 | openstack image create "<이름>" --file <파일경로> --disk-format qcow2 --container-format bare --public |
| 속성 수정 | openstack image set --property <키>=<값> <이미지_ID> |
| 삭제 | openstack image delete <이미지_ID> |
🔧 GPU/가상화 관련 속성 설정 (필수)
# 머신 타입 Q35 설정 (PCIe Passthrough 필수)
openstack image set --property hw_machine_type=q35 <이미지_ID>
# 하이퍼바이저 숨기기 (RTX 계열 필수)
openstack image set --property hw:kvm_hidden=true <이미지_ID>
# Guest Agent 활성화 (IP 확인용)
openstack image set --property hw_qemu_guest_agent=yes <이미지_ID>
3. 플레이버 (Flavor) 관리
인스턴스의 사양(CPU, RAM, Disk)을 정의합니다.
| 작업 | 명령어 |
|---|---|
| 목록 조회 | openstack flavor list |
| 생성 | openstack flavor create --ram <MB> --disk <GB> --vcpus <개수> <플레이버_이름> |
| 삭제 | openstack flavor delete <플레이버_ID> |
🔧 플레이버 속성 (Extra Specs)
# 속성 설정 (GPU용)
openstack flavor set --property hw:pci_numa_affinity_policy=required <플레이버_ID>
# 속성 확인
openstack flavor show <플레이버_ID>
4. 네트워크 (Network) 관리
Neutron 서비스 관련 명령어입니다.
| 작업 | 명령어 | 설명 |
|---|---|---|
| 네트워크 목록 | openstack network list |
내부/외부 네트워크 목록 |
| 서브넷 목록 | openstack subnet list |
IP 대역 확인 |
| 보안그룹 목록 | openstack security group list |
방화벽 그룹 확인 |
| 규칙 추가 | openstack security group rule create --proto tcp --dst-port <포트> <그룹ID> |
포트 개방 (예: 22, 80) |
🌐 Floating IP (공인 IP)
# Floating IP 목록 조회
openstack floating ip list
# 새 IP 생성 (할당)
openstack floating ip create <외부_네트워크_이름>
# 인스턴스에 연결
openstack server add floating ip <인스턴스_ID> <IP주소>
5. 시스템 및 하이퍼바이저 관리 (Admin 전용)
운영자(Operator)가 클러스터 상태를 점검할 때 씁니다.
| 작업 | 명령어 | 설명 |
|---|---|---|
| 하이퍼바이저 상태 | openstack hypervisor list |
각 노드의 UP/DOWN 상태 확인 |
| 컴퓨트 서비스 | openstack compute service list |
nova-compute 서비스 상태 확인 |
| 자원 사용량 | openstack hypervisor stats show |
전체 클러스터 자원 통계 |
| 노드 상세 정보 | openstack hypervisor show <호스트명> |
특정 노드의 CPU/RAM 상세 스펙 |
6. 볼륨 (Volume) 관리
Cinder 서비스 관련 명령어입니다.
| 작업 | 명령어 |
|---|---|
| 목록 조회 | openstack volume list |
| 생성 | openstack volume create --size <GB> <볼륨이름> |
| 연결 | openstack server add volume <인스턴스_ID> <볼륨_ID> |
| 해제 | openstack server remove volume <인스턴스_ID> <볼륨_ID> |
7. Placement (Resource) 관리
Placement 서비스 관련 명령어로, 물리 노드 및 GPU 같은 특수 자원의 재고(Inventory)와 할당(Allocation) 상태를 확인합니다.
| 작업 | 명령어 | 설명 |
|---|---|---|
| RP 목록 조회 | openstack resource provider list |
등록된 모든 자원 제공자(Compute Node, GPU 등) 목록 |
| 재고(Inventory) 확인 | openstack resource provider inventory list <RP_UUID> |
특정 노드의 CPU, RAM, GPU 총량 및 여유분 조회 |
| 사용량(Usage) 확인 | openstack resource provider usage show <RP_UUID> |
특정 노드의 자원별 실제 사용량 조회 |
| 할당(Allocation) 확인 | openstack resource provider allocation show <RP_UUID> |
어떤 인스턴스가 이 노드의 자원을 점유 중인지 확인 |
| 트레이트(Trait) 조회 | openstack resource provider trait list <RP_UUID> |
노드의 특성 태그(예: HW_CPU_X86_AVX512) 조회 |
| 이름 변경 | openstack resource provider set --name <새이름> <RP_UUID> |
리소스 프로바이더 이름 변경 |
| RP 삭제 | openstack resource provider delete <RP_UUID> |
(주의) 자원 제공자 삭제 (좀비 레코드 정리 시 사용) |
🔍 자원 스케줄링 디버깅 (Allocation Candidates)
"내 VM이 왜 생성이 안 되지? (No Valid Host)" 에러가 날 때, 스케줄러 입장에서 **"배포 가능한 후보지"**가 있는지 미리 조회해보는 명령어입니다.
# 스펙에 맞는 후보 호스트 조회 (예: CPU 1개, 메모리 512MB)
openstack allocation candidate list --resource VCPU=1 --resource MEMORY_MB=512
# GPU가 포함된 후보 호스트 조회 (예: GPU 1개 필요)
# (사용자 환경에 따라 클래스 이름이 VGPU 또는 PCI_DEVICE 등으로 다를 수 있음)
openstack allocation candidate list --resource VCPU=4 --resource CUSTOM_GPU_RTX3060=1
💡 Resource Class (자원 클래스) 참고
명령어 사용 시 자주 보이는 자원 이름(Class)들입니다.
VCPU: 가상 CPU 코어 수MEMORY_MB: 메모리 용량 (MB)DISK_GB: 로컬 디스크 용량 (GB)PCI_DEVICE또는CUSTOM_...: GPU 같은 특수 장치
예시: 특정 컴퓨트 노드(openstack22)의 GPU 재고 확인하기
# 1. 목록에서 openstack22의 UUID 찾기
openstack resource provider list --name openstack22
# 2. 해당 UUID로 재고 확인 (GPU 개수 확인용)
openstack resource provider inventory list <openstack22_UUID>
💡 팁: 출력 포맷 예쁘게 보기
명령어 뒤에 -c (컬럼 선택)와 -f (포맷) 옵션을 쓰면 필요한 정보만 깔끔하게 볼 수 있습니다.