-
Notifications
You must be signed in to change notification settings - Fork 46
REST API Examples
ByoungSeob Kim edited this page Sep 19, 2024
·
5 revisions
* 본 가이드는 CB-Spider의 REST API를 이용한 멀티클라우드 제어에 대한 예시를 제공하고 있습니다.
* 본 가이드는 AWS VM 생성 및 제어 중심으로 가이드하고 있습니다.
* 그 외 CSP 및 자원에 대한 활용은 다음 User Guide 및 API 문서 등을 참고하여 유사한 방법으로 적용 가능합니다.
-
- 연동 대상 CSP의 Credential 발급 가이드 참고하여 Credential 정보 준비
-
- CB-Spider 설치 및 실행 가이드 참고하여 CB-Spider 서버 실행
-
- curl을 이용한 CB-Spider REST API 간단한 시험
- CB-Spider 서버가 제공하는 연동 대상 CSP 목록 출력
output
curl -sX GET http://localhost:1024/spider/cloudos |json_pp
{ "cloudos" : [ "AWS", "AZURE", "GCP", "ALIBABA", "TENCENT", "IBM", "OPENSTACK", "NCP", "NCPVPC", "NHNCLOUD", "KTCLOUD", "KTCLOUDVPC", "MOCK" ] }
- CB-Spider 서버가 제공하는 연동 대상 CSP 목록 출력
- curl을 이용한 CB-Spider REST API 간단한 시험
연동 대상 클라우드의 연결 설정을 위한 정보를 등록한다.
연결 설정을 등록한 후에는 등록 시에 부여한 연결 이름(Connection Name)을 이용하여 대상 클라우드에 연결 및 제어할 수 있다.
연결 설정은 다음 순으로 진행한다.
(1) Cloud Driver 등록
(2) Cloud Credential 등록
(3) Cloud Region/Zone 등록
(4) Cloud Connection 등록
-
(1) Cloud Driver 등록
- 연동하고자 하는 대상 Cloud(CSP)에 맞는 Cloud Driver 정보를 등록한다.
- 등록 예시
output
curl -sX POST http://localhost:1024/spider/driver \ -H 'Content-Type: application/json' \ -d '{ "DriverName": "aws-driver01", "ProviderName": "AWS", "DriverLibFileName": "aws-driver-v1.0.so" }' | json_pp
{ "DriverLibFileName" : "aws-driver-v1.0.so", "DriverName" : "aws-driver01", "ProviderName" : "AWS" }
-
(2) Cloud Credential 등록
- 연동하고자 하는 대상 Cloud(CSP)에 맞는 Credential 정보를 등록한다.
- 등록 예시(XXXXX: CSP로부터 발급 받은 정보로 교체)
output
curl -sX POST http://localhost:1024/spider/credential \ -H 'Content-Type: application/json' \ -d '{ "CredentialName": "aws-credential01", "ProviderName": "AWS", "KeyValueInfoList": [ {"Key": "aws_access_key_id", "Value": "XXXXXXXXXXXXXXXXXXXXXXX"}, {"Key": "aws_secret_access_key", "Value": "XXXXXXXXXXXXXXXXXXXXXXX"} ] }' | json_pp
{ "CredentialName" : "aws-credential01", "KeyValueInfoList" : [ { "Key" : "ClientId", "Value" : "XXXXXXXXXXXXXXXXXXXXXXX" }, { "Key" : "ClientSecret", "Value" : "XXXXXXXXXXXXXXXXXXXXXXX" } ], "ProviderName" : "AWS" }
-
(3) Cloud Region/Zone 등록
- 연동하고자 하는 대상 Cloud(CSP)에 맞는 Region/Zone 정보를 등록한다.
- 등록 예시(AWS의 ohio, oregon 지역의 2개의 Region/Zone 등록 예시)
output
regions=("aws-ohio:us-east-2:us-east-2a" "aws-oregon:us-west-2:us-west-2a") for region in "${regions[@]}"; do IFS=":" read -r RegionName Region Zone <<< "$region" curl -sX POST http://localhost:1024/spider/region \ -H 'Content-Type: application/json' \ -d '{ "RegionName": "'$RegionName'", "ProviderName": "AWS", "KeyValueInfoList": [ {"Key": "Region", "Value": "'$Region'"}, {"Key": "Zone", "Value": "'$Zone'"} ] }' | json_pp done
{ "AvailableZoneList" : null, "KeyValueInfoList" : [ { "Key" : "Region", "Value" : "us-east-2" }, { "Key" : "Zone", "Value" : "us-east-2a" } ], "ProviderName" : "AWS", "RegionName" : "aws-ohio" } { "AvailableZoneList" : null, "KeyValueInfoList" : [ { "Key" : "Region", "Value" : "us-west-2" }, ... 중략 ...
-
(4) Cloud Connection 등록
- 연동하고자 하는 대상 Cloud(CSP)에 맞는 Connection 정보를 등록한다.
- 앞에서 등록한 driver name, credential name, region name을 설정한다.
- 등록 예시(AWS ohio, oregon 관련 2개의 Connection 등록 예시)
output
configs=("aws-ohio-config:aws-ohio" "aws-oregon-config:aws-oregon") for config in "${configs[@]}"; do IFS=":" read -r ConfigName RegionName <<< "$config" curl -sX POST http://localhost:1024/spider/connectionconfig \ -H 'Content-Type: application/json' \ -d '{ "ConfigName": "'$ConfigName'", "ProviderName": "AWS", "DriverName": "aws-driver01", "CredentialName": "aws-credential01", "RegionName": "'$RegionName'" }' | json_pp done
{ "ConfigName" : "aws-ohio-config", "CredentialName" : "aws-credential01", "DriverName" : "aws-driver01", "ProviderName" : "AWS", "RegionName" : "aws-ohio" } { "ConfigName" : "aws-oregon-config", "CredentialName" : "aws-credential01", "DriverName" : "aws-driver01", "ProviderName" : "AWS", "RegionName" : "aws-oregon" }
연동 대상 클라우드의 VM 인프라 및 Container(Kubernetes Cluster) 인프라 생성을 위한 기본 자원들을 생성한다.
자원 생성 시에는 위에서 등록한 연결 이름(Connection Name)을 설정으로 대상 CSP, Driver 및 활용 Credential 등이 지정된다.
기본 자원 생성 후에는 생성된 자원 이름을 활용하여 VM 및 Cluster를 생성 및 제어할 수 있다.
기본 자원 생성은 자원간 의존성을 고려하여 다음 순으로 진행한다.
(1) VPC/Subnet 생성
(2) Security Group 생성
(3) SSH KeyPair 생성
※ 참고: 자원 의존 관계
- VPC 생성 시에는 최소 1개 이상의 Subnet 설정 필요, VPC 생성 후 Subnet 추가/삭제 가능
- Subnet, Security Group 및 VM 등은 특정 VPC 하위에 생성 가능
- VPC 삭제는 대상 VPC를 활용하는 VM을 포함한 모든 자원 삭제 후 삭제 가능
- Subnet은 VPC 삭제시 함께 삭제 가능
-
(1) VPC/Subnet 생성
- 생성하고자 하는 대상 인프라 조건에 맞는 VPC/Subnet을 생성한다.
- 생성 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX POST http://localhost:1024/spider/vpc \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'", "ReqInfo": { "Name": "vpc-01", "IPv4_CIDR": "192.168.0.0/16", "SubnetInfoList": [ { "Name": "subnet-01", "IPv4_CIDR": "192.168.1.0/24" } ] } }' | json_pp
{ "IId" : { "NameId" : "vpc-01", "SystemId" : "vpc-060eb5dc45c1117b0" }, "IPv4_CIDR" : "192.168.0.0/16", "SubnetInfoList" : [ { "IId" : { "NameId" : "subnet-01", "SystemId" : "subnet-0b140aaac2024ef83" }, "IPv4_CIDR" : "192.168.1.0/24", "KeyValueList" : [ { "Key" : "VpcId", "Value" : "vpc-060eb5dc45c1117b0" }, ... 중략 ... { "Key" : "Status", "Value" : "available" } ], "TagList" : [ { "Key" : "Name", "Value" : "subnet-01-crehtv3p70iugvns0a7g" } ], "Zone" : "us-east-2a" } ], "TagList" : [ { "Key" : "Name", "Value" : "vpc-01-crehtv3p70iugvns0a70" } ] }
-
(2) Security Group 생성
- 생성하고자 하는 대상 인프라 조건에 맞는 Security Group을 생성한다.
- 생성 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX POST http://localhost:1024/spider/securitygroup \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'", "ReqInfo": { "Name": "sg-01", "VPCName": "vpc-01", "SecurityRules": [ { "FromPort": "1", "ToPort" : "65535", "IPProtocol" : "tcp", "Direction" : "inbound" } ] } }' | json_pp
{ "IId" : { "NameId" : "sg-01", "SystemId" : "sg-090b7a22f58bf49f2" }, "KeyValueList" : [ { "Key" : "GroupName", "Value" : "sg01-crehvcbp70iugvns0a80" }, ... 중략 ... ], "SecurityRules" : [ { "CIDR" : "0.0.0.0/0", "Direction" : "inbound", "FromPort" : "1", "IPProtocol" : "TCP", "ToPort" : "65535" }, { "CIDR" : "0.0.0.0/0", "Direction" : "outbound", "FromPort" : "-1", "IPProtocol" : "ALL", "ToPort" : "-1" } ], "TagList" : [ { "Key" : "Name", "Value" : "sg01-crehvcbp70iugvns0a80" } ], "VpcIID" : { "NameId" : "vpc-01", "SystemId" : "vpc-060eb5dc45c1117b0" } }
-
(3) SSH KeyPair 생성
- 생성하고자 하는 대상 인프라 조건에 맞는 KeyPair를 생성한다.
- 생성 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX POST http://localhost:1024/spider/keypair \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'", "ReqInfo": { "Name": "keypair-01" } }' | json_pp
{ "Fingerprint" : "2e:b2:3d:0c:b8:19:3e:70:fa:98:a6:c6:f5:d2:b6:bb:03:2c:a8:03", "IId" : { "NameId" : "keypair-01", "SystemId" : "keypair-01-crei0krp70iugvns0a8g" }, "KeyValueList" : [ { "Key" : "KeyMaterial", "Value" : "-----BEGIN RSA PRIVATE KEY-----\n... 중략 ...\n-----END RSA PRIVATE KEY-----" } ], "PrivateKey" : "-----BEGIN RSA PRIVATE KEY-----\n... 중략 ...\n-----END RSA PRIVATE KEY-----", "TagList" : [ { "Key" : "Name", "Value" : "keypair-01-crei0krp70iugvns0a8g" } ] }
연동 대상 클라우드에 VM을 생성 및 제어가 가능하다.
VM 제어 시에는 위에서 등록한 연결 이름(Connection Name)을 설정으로 대상 CSP, Driver 및 활용 Credential 등이 지정된다.
VM 생성 시에는 위에서 생성한 기본 자원들을 활용하여 VM 생성이 가능하다.
VM 생성 후에는 생성된 VM의 활용성을 높이기 위하여 Disk, MyImage 및 NLB 등의 추가 자원을 연계하여 활용 가능하다.
본 가이드에서는 추가 자원에 대한 활용은 생략하고 VM 제어에 대해서 다음 순으로 가이드한다.
(1) VM 생성
(2) VM 상태
(3) VM 삭제
-
(1) VM 생성
- 생성하고자 하는 대상 인프라 조건에 맞는 VM을 생성한다.
- 생성 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
- IMAGE_NAME,SPEC_NAME: AWS가 현재 제공하는 정보(CSP 변경시 CSP에 맞게 변경 필요)
- 그외 자원 이름: 위에서 생성한 자원 이름
outputexport CONN_CONFIG=aws-ohio-config export IMAGE_NAME=ami-00978328f54e31526 export SPEC_NAME=t3.micro curl -sX POST http://localhost:1024/spider/vm \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'", "ReqInfo": { "Name": "'${CONN_CONFIG}'-vm-01", "ImageName": "'${IMAGE_NAME}'", "VPCName": "vpc-01", "SubnetName": "subnet-01", "SecurityGroupNames": [ "sg-01" ], "VMSpecName": "'${SPEC_NAME}'", "KeyPairName": "keypair-01" } }' | json_pp
{ "AccessPoint" : "", "IId" : { "NameId" : "aws-ohio-config-vm-01", "SystemId" : "i-0e0267464de62c56f" }, "ImageIId" : { "NameId" : "ami-00978328f54e31526", "SystemId" : "ami-00978328f54e31526" }, "ImageType" : "PublicImage", "KeyPairIId" : { "NameId" : "keypair-01", "SystemId" : "keypair-01-crei0krp70iugvns0a8g" }, "KeyValueList" : [ { "Key" : "State", "Value" : "running" }, { "Key" : "Architecture", "Value" : "x86_64" }, ... 중략 ... ], "NetworkInterface" : "eni-attach-0dcaaeb4270e4edd0", "Platform" : "LINUX/UNIX", "PrivateDNS" : "ip-192-168-1-64.us-east-2.compute.internal", "PrivateIP" : "192.168.1.64", "PublicIP" : "3.149.245.118", "Region" : { "Region" : "us-east-2", "Zone" : "us-east-2a" }, "RootDeviceName" : "/dev/sda1", "RootDiskSize" : "8", "RootDiskType" : "gp2", "SSHAccessPoint" : "3.149.245.118:22", "SecurityGroupIIds" : [ { "NameId" : "sg-01", "SystemId" : "sg-090b7a22f58bf49f2" } ], "StartTime" : "2024-09-08T04:35:18Z", "SubnetIID" : { "NameId" : "subnet-01", "SystemId" : "subnet-0b140aaac2024ef83" }, "TagList" : [ { "Key" : "Name", "Value" : "aws-ohio-config-vm-01-creij1bp70iugvns0a90" } ], "VMBlockDisk" : "/dev/sda1", "VMSpecName" : "t3.micro", "VMUserId" : "cb-user", "VpcIID" : { "NameId" : "vpc-01", "SystemId" : "vpc-060eb5dc45c1117b0" } }
-
(2) VM 상태
- 생성한 VM 상태 정보를 확인한다.
- 확인 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX GET http://localhost:1024/spider/vmstatus \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'" }' | json_pp
{ "vmstatus" : [ { "IId" : { "NameId" : "aws-ohio-config-vm-01", "SystemId" : "i-0e0267464de62c56f" }, "VmStatus" : "Running" } ] }
-
(3) VM 삭제
- 활용한 VM을 삭제한다.
- 삭제 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX DELETE http://localhost:1024/spider/vm/${CONN_CONFIG}-vm-01 \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'" }' | json_pp
{ "Status" : "Terminated" }
활용한 기본 자원들을 삭제한다.
자원 삭제 시에는 위에서 등록한 연결 이름(Connection Name)을 설정으로 대상 CSP, Driver 및 활용 Credential 등이 지정된다.
기본 자원 삭제는 자원간 의존성을 고려하여 다음과 같이 생성한 역순으로 삭제한다.
(1) SSH KeyPair 삭제
(2) Security Group 삭제
(3) VPC/Subnet 삭제
※ 참고: 자원 의존 관계
- VPC 생성 시에는 최소 1개 이상의 Subnet 설정 필요, VPC 생성 후 Subnet 추가/삭제 가능
- Subnet, Security Group 및 VM 등은 특정 VPC 하위에 생성 가능
- VPC 삭제는 대상 VPC를 활용하는 VM을 포함한 모든 자원 삭제 후 삭제 가능
- Subnet은 VPC 삭제시 함께 삭제 가능
-
(1) SSH KeyPair 삭제
- 활용한 SSH KeyPair를 삭제한다.
- 삭제 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX DELETE http://localhost:1024/spider/keypair/keypair-01 \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'" }' | json_pp
{ "Result" : "true" }
-
(2) Security Group 삭제
- 활용한 Security Group을 삭제한다.
- 삭제 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX DELETE http://localhost:1024/spider/securitygroup/sg-01 \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'" }' | json_pp
{ "Result" : "true" }
-
(3) VPC/Subnet 삭제
- 활용한 VPC/Subnet을 삭제한다.
- 삭제 예시
- CONN_CONFIG:위에서 등록한 Connection Name(CSP 변경시 대상 Connection Name으로 설정 필요)
outputexport CONN_CONFIG=aws-ohio-config curl -sX DELETE http://localhost:1024/spider/vpc/vpc-01 \ -H 'Content-Type: application/json' \ -d '{ "ConnectionName": "'${CONN_CONFIG}'" }' | json_pp
{ "Result" : "true" }
-
Install & Start Guide
-
Features & Usage
-
- AdminWeb Tool Guide
- CLI Tool Guide
- REST API Guide
-
Design
-
Developer Guide
-
Cloud Driver Developer Guide
- Cloud Driver Developer Guide-WIP
- VM SSH Key Development Guide-WIP
- VM User Development Guide
- What is the CSP SDK API Version of drivers
- Region Zone Info and Driver API
- Price Info and Driver API
- (StartVM TerminateVM) API Call Counts and Waiting
- StartVM and TerminateVM Main Flow of drivers
- VM Root Disk Configuration Guide
- Security Group Rules and Driver API
- Network Load Balancer and Driver API
- VM Snapshot, MyImage and Disk Overview
- Kubernetes and Driver API(PMKS, K8S)
- Tag and Cloud Driver API
- AnyCall API Extension Guide
-
Test Reports
- v0.2.8-for-espresso-release
- v0.3.0-espresso-release
- Azure:Terminating VM
- cb-user@VM: ssh login, sudo run
- v0.3.14 test for SG Source
- v0.4.0-cafemocha-release
- Test via REST API Gateway
- Test Reports of v0.4.11 (IID2 initial Version)
- Test Reports of v0.4.12 (Register & Unregister existing Resources)
- Test Reports for v0.6.0 Release
- How to ...
- How to provision GPU VMs
- How to Resolve the 'Failed to Connect to Database' Error
- How to test CB Spider with Mock Driver
- How to install CB Spider on WSL2 under 공유기/사설망
- How to install CB Spider on macOS
- How to run CB Spider Container on macOS
- How to install OpenStack on a VM for CB Spider Testing
- How to get Azure available Regions
- How to profile memory usage in Golang
- Deprecated:How to install protoc and plugins
- [For Cloud-Migrator]