Skip to content

features and usages

Jihoon Seo edited this page Aug 19, 2021 · 1 revision

(Content of this page is from https://github.com/cloud-barista/cb-tumblebug/blob/main/README.md#cb-tumblebug-기능-사용-방법)

CB-Tumblebug 기능 사용 방법

(1) CB-Tumblebug 및 CB-Spider의 REST API를 사용하여 테스트

(2) CB-Tumblebug 스크립트를 통한 테스트

  • src/testclient/scripts/
    • 클라우드 인증 정보, 테스트 기본 정보 입력
    • 클라우드정보, Namespace, MCIR, MCIS 등 개별 제어 시험 (개별 시험시, 오브젝트들의 의존성 고려 필요))
    • 한꺼번에 통합 시험 (추천 테스트 방법)
      • src/testclient/scripts/sequentialFullTest/

0) 클라우드 인증 정보, 테스트 기본 정보 입력

  • src/testclient/scripts/ 이동
  • credentials.conf.example을 복사하여 credentials.conf 를 생성하고, credentials.conf 항목에 사용자의 클라우드 인증 정보 입력
  • conf.env 설정
    • CB-Spider 및 CB-Tumblebug 서버 엔드포인트, 클라우드 리젼, 테스트용 이미지명, 테스트용 스팩명 등 테스트 기본 정보 제공
    • 이미 많은 클라우드 타입에 대한 정보가 조사 및 입력되어 있으므로, 특별한 경우가 아니면 수정없이 사용 가능.

1) 클라우드정보, Namespace, MCIR, MCIS 등 개별 제어 시험

  • 제어하고 싶은 리소스 오브젝트에 대해, 해당 디렉토리로 이동하여 필요한 시험 수행
    • 오브젝트는 서로 의존성이 있으므로, 번호를 참고하여 오름차순으로 수행하는 것이 바람직함
      • 1.configureSpider # 클라우드 정보 등록 관련 스크립트 모음
      • 2.configureTumblebug # 네임스페이스 및 동적 환경 설정 관련 스크립트 모음
      • 3.vNet # MCIR vNet 생성 관련 스크립트 모음
      • 4.securityGroup # MCIR securityGroup 생성 관련 스크립트 모음
      • 5.sshKey # MCIR sshKey 생성 관련 스크립트 모음
      • 6.image # MCIR image 등록 관련 스크립트 모음
      • 7.spec # MCIR spec 등록 관련 스크립트 모음
      • 8.mcis # MCIS 생성 및 제어, MCIS 원격 커맨드 등 스크립트 모음
      • 9.monitoring # CB-TB를 통해서 CB-DF 모니터링 에이전트 설치 및 모니터링 테스트 스크립트 모음

2) 한꺼번에 통합 시험 (추천 테스트 방법)

  • src/testclient/scripts/sequentialFullTest/ 에 포함된 create-all.shclean-all.sh 을 수행하면 모든 것을 한번에 테스트 가능
└── sequentialFullTest  # Cloud 정보 등록, NS 생성, MCIR 생성, MCIS 생성까지 한번에 자동 테스트
    ├── create-all.sh  # Cloud 정보 등록, NS 생성, MCIR 생성, MCIS 생성까지 한번에 자동 테스트
    ├── gen-sshKey.sh  # 수행이 진행된 테스트 로그 (MCIS에 접속 가능한 SSH키 파일 생성)  
    ├── command-mcis.sh  # 생성된 MCIS(다중VM)에 원격 명령 수행
    ├── deploy-nginx-mcis.sh  # 생성된 MCIS(다중VM)에 Nginx 자동 배포  
    ├── create-mcis-for-df.sh  # CB-Dragonfly 호스팅을 위한 MCIS 생성        
    ├── deploy-dragonfly-docker.sh  # MCIS에 CB-Dragonfly 자동 배포 및 환경 자동 설정      
    ├── clean-all.sh  # 모든 오브젝트를 생성의 역순으로 삭제
    └── executionStatus  # 수행이 진행된 테스트 로그 (testAll 수행시 정보가 추가되며, cleanAll 수행시 정보가 제거됨. 진행중인 작업 확인 가능)

  • 사용 예시
    • 생성 테스트
      • ./create-all.sh aws 1 shson # aws의 1번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh aws 2 shson # aws의 2번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh aws 3 shson # aws의 3번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh gcp 1 shson # gcp의 1번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh gcp 2 shson # gcp의 2번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh azure 1 shson # azure의 1번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh alibaba 1 shson # alibaba의 1번 리전에 shson이라는 개발자명으로 생성 수행
      • ./create-all.sh all 1 shson ../testSetCustom.env # ../testSetCustom.env 에 구성된 클라우드 조합으로 MCIS 생성 수행 (all 1 all 선택시 리전은 의미가 없으며, 임의로 지정하면 됨. 향후 개선 예정)
    • 제거 테스트 (이미 수행이 진행된 클라우드타입/리전/개발자명 으로만 삭제 진행이 필요)
      • ./clean-all.sh aws 1 shson # aws의 1번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh aws 2 shson # aws의 2번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh aws 3 shson # aws의 3번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh gcp 1 shson # gcp의 1번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh gcp 2 shson # gcp의 2번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh azure 1 shson # azure의 1번 리전에 shson이라는 개발자명으로 제거 수행
      • ./clean-all.sh alibaba 1 shson # alibaba의 1번 리전에 shson이라는 개발자명으로 제거 수행
      • ./create-all.sh all 1 shson ../testSetCustom.env # ../testSetCustom.env 에 구성된 클라우드 조합으로 제거 수행
입출력 예시 보기
~/go/src/github.com/cloud-barista/cb-tumblebug/src/testclient/scripts/sequentialFullTest$ ./create-all.sh aws 1 shson
####################################################################
## Create MCIS from Zero Base
####################################################################
[Test for AWS]
####################################################################
## 0. Create Cloud Connction Config
####################################################################
[Test for AWS]
{
   "ProviderName" : "AWS",
   "DriverLibFileName" : "aws-driver-v1.0.so",
   "DriverName" : "aws-driver01"
}
..........
   "RegionName" : "aws-us-east-1"
}
{
   "CredentialName" : "aws-credential01",
   "RegionName" : "aws-us-east-1",
   "DriverName" : "aws-driver01",
   "ConfigName" : "aws-us-east-1",
   "ProviderName" : "AWS"
}
####################################################################
## 0. Namespace: Create
####################################################################
{
   "message" : "The namespace NS-01 already exists."
}
####################################################################
## 1. vpc: Create
####################################################################
[Test for AWS]
{
   "subnetInfoList" : [
      {
         "IId" : {
            "SystemId" : "subnet-0ab25b7090afa97b7",
            "NameId" : "aws-us-east-1-shson"
         },
................
   "status" : "",
   "name" : "aws-us-east-1-shson",
   "keyValueList" : null,
   "connectionName" : "aws-us-east-1",
   "cspVNetId" : "vpc-0e3004f28e8a89057"
}
Dozing for 10 : 1 2 3 4 5 6 7 8 9 10 (Back to work)
####################################################################
## 2. SecurityGroup: Create
####################################################################
[Test for AWS]
{
   "keyValueList" : [
      {
         "Value" : "aws-us-east-1-shson-delimiter-aws-us-east-1-shson",
         "Key" : "GroupName"
      },
      {
         "Key" : "VpcID",
...........
   "name" : "aws-us-east-1-shson",
   "description" : "test description",
   "cspSecurityGroupId" : "sg-033e4b7c42671873c",
   "id" : "aws-us-east-1-shson"
}
Dozing for 10 : 1 2 3 4 5 6 7 8 9 10 (Back to work)
####################################################################
## 3. sshKey: Create
####################################################################
[Test for AWS]
{
   "name" : "aws-us-east-1-shson",
   "fingerprint" : "d2:1a:a0:6d:b3:f7:8e:b7:44:9f:13:9c:d6:e3:a8:c3:58:8c:de:27",
..............
   "id" : "aws-us-east-1-shson",
   "description" : "",
   "privateKey" : "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAopGlO3dUrB4AMcBr4XZg0OVrveecA9Hv0/a9GmxgXU5dx42YV4DwW7oq/+Dq\nPaCSXvGGtdVHuL0hoOKdGYOx89qzi+nUgNQup+pKLbQw4aU2gVbV1/3/ejt7tYRUeWNU9c4b7m7E\nfs3A0xgfmak90eoQen+TJYhkfdWcSwkmJSH61bEFRbdeyijEODCu0TAGDrtRZzdCRUzbA/N7FjsC\ns0a1C...LpszE9J0bfhLOqgmkYNGSw4oR+gPRIsipUK6SzaRH7nFnOSw=\n-----END RSA PRIVATE KEY-----",
   "username" : ""
}
####################################################################
## 4. image: Register
####################################################################
[Test for AWS]
{
   "keyValueList" : [
      {
         "Key" : "",
         "Value" : ""
      },
      {
         "Value" : "",
         "Key" : ""
      }
   ],
   "description" : "Canonical, Ubuntu, 18.04 LTS, amd64 bionic",
   "cspImageName" : "",
   "connectionName" : "aws-us-east-1",
   "status" : "",
   "creationDate" : "",
   "cspImageId" : "ami-085925f297f89fce1",
   "name" : "aws-us-east-1-shson",
   "guestOS" : "Ubuntu",
   "id" : "aws-us-east-1-shson"
}
####################################################################
## 5. spec: Register
####################################################################
[Test for AWS]
{
   "mem_MiB" : "1024",
   "max_num_storage" : "",
........
   "mem_GiB" : "1",
   "id" : "aws-us-east-1-shson",
   "num_core" : "",
   "cspSpecName" : "t2.micro",
   "storage_GiB" : "",
   "ebs_bw_Mbps" : "",
   "connectionName" : "aws-us-east-1",
   "net_bw_Gbps" : "",
   "gpu_model" : "",
   "cost_per_hour" : "",
   "name" : "aws-us-east-1-shson"
}
####################################################################
## 6. vm: Create MCIS
####################################################################
[Test for AWS]
{
   "targetAction" : "Create",
   "status" : "Running-(3/3)",
   "id" : "aws-us-east-1-shson",
   "name" : "aws-us-east-1-shson",
   "description" : "Tumblebug Demo",
   "targetStatus" : "Running",
   "placementAlgo" : "",
   "vm" : [
      {
         "vmUserId" : "",
         "targetStatus" : "None",
         "subnetId" : "aws-us-east-1-shson",
         "location" : {
            "nativeRegion" : "us-east-1",
            "cloudType" : "aws",
            "latitude" : "38.1300",
            "briefAddr" : "Virginia",
            "longitude" : "-78.4500"
         },
         "vm_accessId" : "",
         "region" : {
            "Region" : "us-east-1",
            "Zone" : "us-east-1f"
         },
         "imageId" : "aws-us-east-1-shson",
         "privateDNS" : "ip-192-168-1-108.ec2.internal",
         "vmBootDisk" : "/dev/sda1",
         "status" : "Running",
         "security_groupIds" : [
            "aws-us-east-1-shson"
         ],
         "vm_access_passwd" : "",
 .........
            "VMUserId" : "",
            "SecurityGroupIIds" : [
               {
                  "SystemId" : "sg-033e4b7c42671873c",
                  "NameId" : "aws-us-east-1-shson"
               }
            ],
            "VMBootDisk" : "/dev/sda1",
            "PrivateDNS" : "ip-192-168-1-108.ec2.internal",
            "StartTime" : "2020-05-30T18:33:42Z",
            "VMBlockDisk" : "/dev/sda1",
            "ImageIId" : {
               "SystemId" : "ami-085925f297f89fce1",
               "NameId" : "ami-085925f297f89fce1"
            }
         },
         "publicIP" : "35.173.215.4",
         "name" : "aws-us-east-1-shson-01",
         "id" : "aws-us-east-1-shson-01",
         "vnetId" : "aws-us-east-1-shson",
         "sshKeyId" : "aws-us-east-1-shson",
         "privateIP" : "192.168.1.108",
         "config_name" : "aws-us-east-1",
         "vmBlockDisk" : "/dev/sda1",
         "targetAction" : "None",
         "description" : "description",
         "specId" : "aws-us-east-1-shson",
         "publicDNS" : "",
         "vmUserPasswd" : ""
      },
      {
         "vmBlockDisk" : "/dev/sda1",
         "targetAction" : "None",
         "description" : "description",
         "specId" : "aws-us-east-1-shson",
         "vmUserPasswd" : "",
         ..........
      }
   ]
}
Dozing for 1 : 1 (Back to work)
####################################################################
## 6. VM: Status MCIS
####################################################################
[Test for AWS]
{
   "targetStatus" : "None",
   "id" : "aws-us-east-1-shson",
   "targetAction" : "None",
   "vm" : [
      {
         "publicIp" : "35.173.215.4",
         "nativeStatus" : "Running",
         "cspId" : "aws-us-east-1-shson-01",
         "name" : "aws-us-east-1-shson-01",
         "status" : "Running",
         "targetAction" : "None",
         "targetStatus" : "None",
         "id" : "aws-us-east-1-shson-01"
      },
      {
         "name" : "aws-us-east-1-shson-02",
         "status" : "Running",
         "targetAction" : "None",
         "targetStatus" : "None",
         "id" : "aws-us-east-1-shson-02",
         "publicIp" : "18.206.13.233",
         "cspId" : "aws-us-east-1-shson-02",
         "nativeStatus" : "Running"
      },
      {
         "targetAction" : "None",
         "id" : "aws-us-east-1-shson-03",
         "targetStatus" : "None",
         "name" : "aws-us-east-1-shson-03",
         "status" : "Running",
         "cspId" : "aws-us-east-1-shson-03",
         "nativeStatus" : "Running",
         "publicIp" : "18.232.53.134"
      }
   ],
   "status" : "Running-(3/3)",
   "name" : "aws-us-east-1-shson"
}

[Logging to notify latest command history]

[Executed Command List]
[CMD] create-all.sh gcp 1 shson
[CMD] create-all.sh alibaba 1 shson
[CMD] create-all.sh aws 1 shson

마지막의 [Executed Command List] 에는 수행한 커맨드의 히스토리가 포함됨. (cat ./executionStatus 를 통해 다시 확인 가능)

3) 멀티 클라우드 인프라 유스케이스

MCIS SSH 원격 커맨드
  • SSH 원격 커맨드 실행을 통해서 접속 여부 등을 확인 가능
    • command-mcis.sh # 생성된 MCIS(다중VM)에 원격 명령 수행
    • 실행 예시
      • ./create-all.sh all 1 shson ../testSet.env # testSet.env 에 구성된 정보를 기준으로 MCIS 생성
      • ./command-mcis.sh all 1 shson ../testSet.env # MCIS의 모든 VM에 IP 및 Hostname 조회를 수행
MCIS SSH 접속키 생성 및 접속
  • 스크립트를 통해 MCIS의 VM에 각각 접속할 수 있는 SSH Key 및 주소를 생성
    • gen-sshKey.sh # MCIS에 구성된 모든 VM의 접속키 리턴
    • 실행 예시
      • ./create-all.sh all 1 shson ../testSetAws.env # testSetAws.env 에 구성된 정보를 기준으로 MCIS 생성
      • ./gen-sshKey.sh all 1 shson ../testSetAws.env # MCIS에 구성된 모든 VM의 접속키 리턴
        son@son:~/go/src/github.com/cloud-barista/cb-tumblebug/src/testclient/scripts/sequentialFullTest$ ./gen-sshKey.sh all 1 shson ../testSetAws.env 
        ...
        [GENERATED PRIVATE KEY (PEM, PPK)]
        [MCIS INFO: mc-shson]
         [VMIP]: 13.212.254.59   [MCISID]: mc-shson   [VMID]: aws-ap-se-1-0
         ./sshkey-tmp/aws-ap-se-1-shson.pem 
         ./sshkey-tmp/aws-ap-se-1-shson.ppk
         ...
         [VMIP]: 35.182.30.37   [MCISID]: mc-shson   [VMID]: aws-ca-ct-1-0
         ./sshkey-tmp/aws-ca-ct-1-shson.pem 
         ./sshkey-tmp/aws-ca-ct-1-shson.ppk
        
        [SSH COMMAND EXAMPLE]
         [VMIP]: 13.212.254.59   [MCISID]: mc-shson   [VMID]: aws-ap-se-1-0
         ssh -i ./sshkey-tmp/aws-ap-se-1-shson.pem cb-user@13.212.254.59 -o StrictHostKeyChecking=no
         ...
         [VMIP]: 35.182.30.37   [MCISID]: mc-shson   [VMID]: aws-ca-ct-1-0
         ssh -i ./sshkey-tmp/aws-ca-ct-1-shson.pem cb-user@35.182.30.37 -o StrictHostKeyChecking=no
        
MCIS Nginx 분산 배치
  • Nginx를 분산 배치하여, 웹서버 접속 시험 가능
    • deploy-nginx-mcis.sh # 생성된 MCIS(다중VM)에 Nginx 자동 배포
    • 실행 예시
      • deploy-nginx-mcis.sh all 1 shson ../testSetAws.env # testSetAws.env 에 구성된 정보를 기준으로 MCIS의 모든 VM에 Nginx 및 웹페이지 설치
        ~/go/src/github.com/cloud-barista/cb-tumblebug/src/testclient/scripts/sequentialFullTest$ ./deploy-nginx-mcis.sh all 1 shson ../testSetAws.env
        {
          "result_array" : [
              {
                "vmIp" : "35.173.215.4",
                "vmId" : "aws-us-east-1-shson-01",
                "result" : "WebServer is ready. Access http://35.173.215.4",
                "mcisId" : "aws-us-east-1-shson"
              },
              ...
              {
                "mcisId" : "aws-us-east-1-shson",
                "result" : "WebServer is ready. Access http://18.232.53.134",
                "vmId" : "aws-us-east-1-shson-03",
                "vmIp" : "18.232.53.134"
              }
          ]
        }
        
MCIS Weave Scope 클러스터 모니터링 분산 배치
MCIS Jitsi 영상 회의 배치
MCIS Ansible 실행 환경 자동 구성
MCIS 토이 게임 서버 배치
Clone this wiki locally