VM Management Guide(KR) - cloud-barista/cb-spider GitHub Wiki
- μ¬μ©μλ CB-Spiderλ₯Ό ν΅ν΄ λ©ν° ν΄λΌμ°λ νκ²½μμ κ°μλ¨Έμ (VM)μ ν΅ν© κ΄λ¦¬ν μ μλ€.
- VMμ VPC, Subnet, Security Group, KeyPair λ±μ λ€νΈμν¬ λ¦¬μμ€μ ν¨κ» ꡬμ±λμ΄ μμ ν ν΄λΌμ°λ μΈνλΌλ₯Ό νμ±νλ€.
- CB-Spiderλ VM μλͺ μ£ΌκΈ°(μμ±/μμ, μ€μ§, μ¬κ°, μ¬λΆν , μ’ λ£) μ λ°μ κ΄λ¦¬νλ APIλ₯Ό μ 곡νλ€.
- VMκ³Ό κ΄λ ¨ 리μμ€ κ°μ κ΄κ³λ μλ κ·Έλ¦Όκ³Ό κ°λ€.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CB-Spider VM β
β β
β VPC (10.0.0.0/16) β
β βββ SecurityGroup-1 (SSH, HTTP, HTTPS) β
β βββ Subnet-1 (10.0.0.0/24, us-east-1a) β
β β βββ VM-1 β
β β βββ Image: Ubuntu 22.04 β
β β βββ Spec: t2.micro β
β β βββ KeyPair: keypair-01 β
β β βββ PublicIP: 1.2.3.4 β
β β βββ PrivateIP: 10.0.0.10 β
β β βββ RootDisk: 30GB (gp2) β
β β βββ DataDisks: disk-01, disk-02 β
β βββ Subnet-2 (10.0.1.0/24, us-east-1b) β
β βββ VM-2, VM-3, ... β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- μ¬μ©μλ λ€μκ³Ό κ°μ CB-Spider REST APIλ₯Ό μ΄μ©νμ¬ VM μ 보λ₯Ό JSON κ·κ²©μΌλ‘ μ 곡λ°λλ€.
# VM μμ±/μμ λ° μ‘°ν
POST /spider/vm - Start VM (VM μμ± λ° μμ)
GET /spider/vm - List VMs
GET /spider/vm/{Name} - Get VM
DELETE /spider/vm/{Name} - Terminate VM
# VM λ±λ‘/ν΄μ (κΈ°μ‘΄ CSP VM μ°λ)
POST /spider/regvm - Register VM
DELETE /spider/regvm/{Name} - Unregister VM
# VM λͺ©λ‘ μ‘°ν (μ 체)
GET /spider/allvm - List All VMs (CB-Spider + CSP)
GET /spider/allvminfo - List All VMs Info
# VM μν κ΄λ¦¬
GET /spider/vmstatus - List VM Statuses
GET /spider/vmstatus/{Name} - Get VM Status
PUT /spider/controlvm/{Name}?action={suspend|resume|reboot} - Control VM
# VM ν΅κ³
GET /spider/countvm - Count All VMs
GET /spider/countvm/{ConnectionName} - Count VMs by Connection
# CSP VM μ§μ μ‘°ν/μμ
GET /spider/cspvm/{Id} - Get CSP VM
DELETE /spider/cspvm/{Id} - Terminate CSP VM
# VM μ¬μ© 리μμ€ μ‘°ν
POST /spider/getvmusingresources - Get VM Using Resources
VM μ 보 (VMInfo)
| νλ | μ€λͺ | μμ |
|---|---|---|
| IId | VM μλ³μ μ 보 (NameId, SystemId) | β {Name: "vm-01", SystemId: "i-1234abcd"} |
| StartTime | VM μμ μκ° | β "2024-08-27T10:00:00Z" |
| Region | VMμ΄ μμΉν 리μ λ° Zone μ 보 | β {Region: "us-east-1", Zone: "us-east-1a"} |
| ImageType | μ΄λ―Έμ§ νμ | β "PublicImage" λλ "MyImage" |
| ImageIId | VM μ΄λ―Έμ§ μ 보 | β {Name: "ubuntu-22.04", SystemId: "ami-1234"} |
| VMSpecName | VM μ¬μ μ΄λ¦ | β "t2.micro", "Standard_B2s" λ± |
| VpcIID | VPC μλ³μ | β {Name: "vpc-01", SystemId: "vpc-1234"} |
| SubnetIID | Subnet μλ³μ | β {Name: "subnet-01", SystemId: "subnet-1234"} |
| SecurityGroupIIds | 보μ κ·Έλ£Ή λͺ©λ‘ | β [{Name: "sg-01", SystemId: "sg-1234"}] |
| KeyPairIId | ν€νμ΄ μ 보 | β {Name: "keypair-01", SystemId: "key-1234"} |
| RootDiskType | λ£¨νΈ λμ€ν¬ νμ | β "gp2", "Premium SSD" λ± |
| RootDiskSize | λ£¨νΈ λμ€ν¬ ν¬κΈ° (GB) | β "30", "100" λ± |
| RootDeviceName | λ£¨νΈ λλ°μ΄μ€ μ΄λ¦ | β "/dev/sda1" |
| DataDiskIIDs | λ°μ΄ν° λμ€ν¬ λͺ©λ‘ | β [{Name: "disk-01", SystemId: "vol-1234"}] |
| VMUserId | VM μ μ μ¬μ©μ ID | β "cb-user" (CB-Spider μΆμνλ μ¬μ©μ) |
| VMUserPasswd | VM μ¬μ©μ λΉλ°λ²νΈ (Windowsλ§ ν΄λΉ) | β "password1234" |
| NetworkInterface | λ€νΈμν¬ μΈν°νμ΄μ€ | β "eni-12345678" |
| PublicIP | κ³΅μΈ IP μ£Όμ | β "1.2.3.4" |
| PublicDNS | κ³΅μΈ DNS μ΄λ¦ | β "ec2-1-2-3-4.compute-1.amazonaws.com" |
| PrivateIP | μ¬μ€ IP μ£Όμ | β "10.0.0.10" |
| PrivateDNS | μ¬μ€ DNS μ΄λ¦ | β "ip-10-0-0-10.ec2.internal" |
| Platform | νλ«νΌ νμ | β "LINUX/UNIX" λλ "WINDOWS" |
| AccessPoint | SSH/RDP μ μ ν¬μΈνΈ | β "1.2.3.4:22" (Linux), "1.2.3.4:3389" (Windows) |
| TagList | VMμ ν λΉλ νκ·Έ 리μ€νΈ | β [{Key: "Name", Value: "MyVM"}] |
| KeyValueList | CSPκ° μ 곡νλ μΆκ° μ 보 | β [{Key: "Architecture", Value: "x86_64"}] |
VM μν μ 보 (VMStatus)
| μν | μ€λͺ |
|---|---|
| Creating | VM μμ± μ€ |
| Running | VM μ€ν μ€ |
| Suspending | VM μ€μ§ μ€ |
| Suspended | VM μ€μ§λ¨ |
| Resuming | VM μ¬κ° μ€ |
| Rebooting | VM μ¬λΆν μ€ |
| Terminating | VM μ’ λ£ μ€ |
| Terminated | VM μ’ λ£λ¨ |
| NotExist | VMμ΄ μ‘΄μ¬νμ§ μμ |
| Failed | VM μ€λ₯ μν |
μ£Όμ νλ μ€λͺ :
- ImageType: PublicImage(νΌλΈλ¦ μ΄λ―Έμ§) λλ MyImage(μ¬μ©μ μ€λ μ· μ΄λ―Έμ§)
- VMUserId: CB-Spiderμμλ νμ "cb-user" μΆμνλ μ¬μ©μ μ¬μ©
- Platform: LINUX/UNIX λλ WINDOWS
- AccessPoint: SSH(Linux) λλ RDP(Windows) μ μ ν¬μΈνΈ
- AWSμμ Ubuntu VMμ μμ±νλ API νΈμΆ λ° κ²°κ³Ό μμ:
curl -sX 'POST' 'http://localhost:1024/spider/vm' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01",
"ReqInfo": {
"Name": "vm-web-01",
"ImageType": "PublicImage",
"ImageName": "ami-009e2f5f8d69abd47",
"VMSpecName": "t2.micro",
"VPCName": "vpc-01",
"SubnetName": "subnet-01",
"SecurityGroupNames": ["sg-web", "sg-ssh"],
"KeyPairName": "keypair-web",
"RootDiskType": "gp2",
"RootDiskSize": "30"
}
}' | jqμλ΅ μμ:
{
"IId": {
"NameId": "vm-web-01",
"SystemId": "i-0a1b2c3d4e5f67890"
},
"StartTime": "2024-08-27T10:30:00Z",
"Region": {
"Region": "us-east-1",
"Zone": "us-east-1a"
},
"ImageType": "PublicImage",
"ImageIId": {
"NameId": "ami-009e2f5f8d69abd47",
"SystemId": "ami-009e2f5f8d69abd47"
},
"VMSpecName": "t2.micro",
"VpcIID": {
"NameId": "vpc-01",
"SystemId": "vpc-0a1b2c3d"
},
"SubnetIID": {
"NameId": "subnet-01",
"SystemId": "subnet-1a2b3c4d"
},
"SecurityGroupIIds": [
{
"NameId": "sg-web",
"SystemId": "sg-0a1b2c3d"
},
{
"NameId": "sg-ssh",
"SystemId": "sg-1b2c3d4e"
}
],
"KeyPairIId": {
"NameId": "keypair-web",
"SystemId": "keypair-web-d60mdhu1pc4mliscb9og"
},
"RootDiskType": "gp2",
"RootDiskSize": "30",
"RootDeviceName": "/dev/sda1",
"VMUserId": "cb-user",
"NetworkInterface": "eni-0a1b2c3d4e5f67890",
"PublicIP": "54.123.45.67",
"PublicDNS": "ec2-54-123-45-67.compute-1.amazonaws.com",
"PrivateIP": "10.0.0.10",
"PrivateDNS": "ip-10-0-0-10.ec2.internal",
"Platform": "LINUX/UNIX",
"SSHAccessPoint": "54.123.45.67:22",
"AccessPoint": "",
"KeyValueList": [
{
"Key": "Architecture",
"Value": "x86_64"
},
{
"Key": "InstanceState",
"Value": "running"
}
]
}- Windows VM μμ± μ VMUserIdμ VMUserPasswd μ§μ :
curl -sX 'POST' 'http://localhost:1024/spider/vm' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01",
"ReqInfo": {
"Name": "vm-windows-01",
"ImageType": "PublicImage",
"ImageName": "ami-000832ed5212e3687",
"VMSpecName": "t3.medium",
"VPCName": "vpc-01",
"SubnetName": "subnet-01",
"SecurityGroupNames": ["sg-rdp"],
"KeyPairName": "keypair-windows",
"VMUserId": "Administrator",
"VMUserPasswd": "SecureP@ssw0rd!",
"RootDiskType": "gp2",
"RootDiskSize": "50"
}
}' | jqcurl -sX 'POST' 'http://localhost:1024/spider/vm' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01",
"ReqInfo": {
"Name": "vm-data-01",
"ImageType": "PublicImage",
"ImageName": "ami-009e2f5f8d69abd47",
"VMSpecName": "t2.medium",
"VPCName": "vpc-01",
"SubnetName": "subnet-01",
"SecurityGroupNames": ["sg-web"],
"KeyPairName": "keypair-web",
"RootDiskSize": "30",
"DataDiskNames": ["data-disk-01", "data-disk-02"]
}
}' | jqcurl -sX 'GET' 'http://localhost:1024/spider/vm?ConnectionName=aws-config01' | jqμλ΅ μμ:
{
"vm": [
{
"IId": {
"NameId": "vm-web-01",
"SystemId": "i-0a1b2c3d4e5f67890"
},
"PublicIP": "54.123.45.67",
"PrivateIP": "10.0.0.10",
"VMSpecName": "t2.micro",
"Platform": "LINUX/UNIX",
...
},
{
"IId": {
"NameId": "vm-web-02",
"SystemId": "i-1b2c3d4e5f678901"
},
"PublicIP": "54.123.45.68",
"PrivateIP": "10.0.0.11",
"VMSpecName": "t2.micro",
"Platform": "LINUX/UNIX",
...
}
]
}curl -sX 'GET' 'http://localhost:1024/spider/vmstatus/vm-web-01?ConnectionName=aws-config01' | jqμλ΅ μμ:
{
"Status": "Running"
}VM μ€μ§ (Suspend):
curl -sX 'PUT' 'http://localhost:1024/spider/controlvm/vm-web-01?action=suspend' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jqVM μ¬κ° (Resume):
curl -sX 'PUT' 'http://localhost:1024/spider/controlvm/vm-web-01?action=resume' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jqVM μ¬λΆν (Reboot):
curl -sX 'PUT' 'http://localhost:1024/spider/controlvm/vm-web-01?action=reboot' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jqμλ΅ μμ:
{
"Status": "Suspended"
}curl -sX 'DELETE' 'http://localhost:1024/spider/vm/vm-web-01' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jqμλ΅ μμ:
{
"Status": "Terminated"
}- μ°κ²°λ 리μμ€κ° μμ΄λ κ°μ λ‘ VMμ μ’ λ£:
curl -sX 'DELETE' 'http://localhost:1024/spider/vm/vm-web-01?force=true' \
-H 'Content-Type: application/json' \
-d '{
"ConnectionName": "aws-config01"
}' | jq-
λ€μ μμλ‘ λμ CSP μ ν λ° VM μ 보λ₯Ό κ΄λ¦¬νλ€.
- Connection μ ν: AdminWeb μλ¨μμ λμ CSP Connection μ ν
- VM λ©λ΄ μ κ·Ό: μ’μΈ‘ λ©λ΄μμ "VM" μ ν
- VM μμ±: "Start VM" λ²νΌ ν΄λ¦ ν νμν μ 보 μ λ ₯
- VM κ΄λ¦¬: μμ±λ VMμ μν νμΈ, μ μ΄, μ’ λ£ λ± μν
AdminWebμμ VM λͺ©λ‘μ μ‘°ννλ©΄ λ€μκ³Ό κ°μ μ λ³΄κ° νμλλ€:
- VM Name
- VM Status (Running, Suspended, etc.)
- Public IP / Private IP
- VM Spec
- Platform (LINUX/UNIX, WINDOWS)
- μμ± μκ°
- μμ λ²νΌ (μμΈλ³΄κΈ°, μ μ΄, μ’ λ£ λ±)
AdminWebμμ VM μμ± μ λ€μ μ 보λ₯Ό μ λ ₯νλ€:
- VM Name: CB-Spiderμμ κ΄λ¦¬ν VM μ΄λ¦
- Image Type: PublicImage λλ MyImage
- Image Name: μ¬μ©ν μ΄λ―Έμ§ μ ν
- VM Spec: μΈμ€ν΄μ€ νμ μ ν
- VPC/Subnet: λ€νΈμν¬ κ΅¬μ± μ ν
- Security Groups: 보μ κ·Έλ£Ή μ ν (볡μ μ ν κ°λ₯)
- KeyPair: SSH μ μμ© ν€νμ΄ μ ν
- Root Disk: λμ€ν¬ νμ λ° ν¬κΈ° μ§μ
- Data Disks (μ ν): μΆκ° λ°μ΄ν° λμ€ν¬ μ ν
- Tags (μ ν): 리μμ€ νκ·Έ μ 보
VM μμΈ νλ©΄μμλ λ€μ μ λ³΄κ° νμλλ€:
κΈ°λ³Έ μ 보:
- VM IId (NameId, SystemId)
- VM Status
- Start Time
- Region/Zone
λ€νΈμν¬ μ 보:
- VPC/Subnet
- Security Groups
- Public IP/DNS
- Private IP/DNS
- Network Interface
μ€ν λ° λμ€ν¬:
- VM Spec Name
- Image Information
- Root Disk (Type, Size, Device Name)
- Data Disks (if any)
μ μ μ 보:
- Platform (LINUX/UNIX or WINDOWS)
- VM User ID
- Access Point (IP:Port)
- KeyPair Information
μμ λ²νΌ:
- Control VM: Suspend, Resume, Reboot
- Terminate VM: VM μ’ λ£
- Refresh: μ 보 κ°±μ
stateDiagram-v2
[*] --> Creating: StartVM
Creating --> Running: Creation Complete
Running --> Suspending: Suspend
Suspending --> Suspended: Suspension Complete
Suspended --> Resuming: Resume
Resuming --> Running: Resume Complete
Running --> Rebooting: Reboot
Rebooting --> Running: Reboot Complete
Running --> Terminating: Terminate
Suspended --> Terminating: Terminate
Terminating --> Terminated: Termination Complete
Terminated --> [*]
Creating --> Failed: Error
Running --> Failed: Error
Suspending --> Failed: Error
Resuming --> Failed: Error
Rebooting --> Failed: Error
Terminating --> Failed: Error
| νμ¬ μν | κ°λ₯ν μμ |
|---|---|
| Creating | λκΈ° (μμ± μλ£κΉμ§) |
| Running | Suspend, Reboot, Terminate |
| Suspending | λκΈ° (μ€μ§ μλ£κΉμ§) |
| Suspended | Resume, Terminate |
| Resuming | λκΈ° (μ¬κ° μλ£κΉμ§) |
| Rebooting | λκΈ° (μ¬λΆν μλ£κΉμ§) |
| Terminating | λκΈ° (μ’ λ£ μλ£κΉμ§) |
| Terminated | μμ λ¨ |
- νμ 리μμ€ μ¬μ μμ±: VPC, Subnet, Security Group, KeyPairλ VM μμ± μ μ 미리 μμ±λμ΄ μμ΄μΌ ν¨
- Zone μΌμΉ: Subnetκ³Ό DataDiskλ λμΌν Zoneμ μμ΄μΌ ν¨
- Image Type μ ν: PublicImage(νΌλΈλ¦ μ΄λ―Έμ§) λλ MyImage(μ€λ μ· μ΄λ―Έμ§) μ€ μ ν
- Windows VM: VMUserIdμ VMUserPasswd νμ μ§μ
- Root Disk ν¬κΈ°: CSPλ³ μ΅μ/μ΅λ ν¬κΈ° μ μ½ νμΈ νμ
- λ°μ΄ν° λ°±μ : VM μ’ λ£ μ Root Disk λ°μ΄ν°λ μμ λλ―λ‘ νμν λ°μ΄ν°λ μ¬μ λ°±μ νμ
- κ°μ μ’ λ£: force=true μ΅μ μ¬μ© μ μ°κ²°λ 리μμ€μμ κ΄κ³ κ²μ¦ μμ΄ κ°μ μ’ λ£λ¨ (μ£Όμ!)
-
Linux VM: SSH μ μ -
ssh -i keypair.pem cb-user@<Public-IP> -
Windows VM: RDP μ μ - Windows μ격 λ°μ€ν¬ν± μ°κ²°λ‘
<Public-IP>:3389μ μ - VMUserId: CB-Spiderλ λͺ¨λ VMμ "cb-user" κ³μ μλ μμ± (μΆμνλ μ¬μ©μ)
- KeyPair: Linux VM μ μ μ νμ, Private Key μμ λ³΄κ΄ νμ