Skip to content

cloud-barista/cb-tumblebug

CB-Tumblebug (Multi-Cloud Infra Management) 👋

Go Report Card Top Language GitHub go.mod Go version Repo Size GoDoc Codebase Swagger API Doc

License Release Version Pre Release Version Build Slack

All Contributors

What is CB-Tumblebug? ✨

CB-Tumblebug (CB-TB) is an advanced multi-cloud infrastructure management system that enables seamless provisioning, management, and orchestration of resources across multiple cloud service providers. Part of the Cloud-Barista project, CB-TB abstracts the complexity of multi-cloud environments into a unified, intuitive interface.

🎯 Key Capabilities

  • 🌐 Multi-Cloud Orchestration: Manage AWS, Azure, GCP, Alibaba Cloud, and more from a single platform
  • ⚡ Auto-provisioning: Intelligent resource recommendations and automated deployment
  • 🔐 Secure Operations: Encrypted credential management and hybrid encryption protocols
  • 🗺️ Visual Infrastructure Map: Interactive GUI for infrastructure visualization and management
  • 🤖 AI-Powered Management: NEW! Control infrastructure using natural language via our MCP Server

📚 Documentation & Resources


📋 Development Status & Contributing Notes

🚧 Ongoing Development

CB-TB has not reached version 1.0 yet. We welcome any new suggestions, issues, opinions, and contributors! Please note that the functionalities of Cloud-Barista are not yet stable or secure. Be cautious if you plan to use the current release in a production environment. If you encounter any difficulties using Cloud-Barista, please let us know by opening an issue or joining the Cloud-Barista Slack.

🌍 Localization & Globalization

As an open-source project initiated by Korean members, we aim to encourage participation from Korean contributors during the initial stages of this project. Therefore, the CB-TB repository will accept the use of the Korean language in its early stages. However, we hope this project will thrive regardless of contributors' countries in the long run. To facilitate this, the maintainers recommend using English at least for the titles of Issues, Pull Requests, and Commits, while accommodating local languages in the contents.

🌟 Featured Use Cases

🤖 NEW: AI-Powered Multi-Cloud Management

🎮 GPU-Powered Multi-Cloud LLM Deployment Multi-Cloud LLMs in parallel


Table of Contents �

  1. ⚡ Quick Start
  2. 🔧 Prerequisites
  3. 🚀 Installation & Setup
  4. 🌟 How to Use
  5. 🛠️ Development
  6. 🤝 Contributing

Quick Start ⚡

Get CB-Tumblebug running in under 5 minutes:

# 1. Automated setup (recommended for new users)
curl -sSL https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/scripts/set-tb.sh | bash

# 2. Start all services
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make compose

# 3. Configure credentials (see detailed setup below)
./init/genCredential.sh
# Edit ~/.cloud-barista/credentials.yaml with your cloud credentials
./init/encCredential.sh
./init/init.sh

# 4. Access services
# - API: http://localhost:1323/tumblebug/api
# - MapUI: http://localhost:1324
# - MCP Server: http://localhost:8000/sse (if enabled)

💡 New to CB-Tumblebug? Follow the detailed setup guide below for comprehensive instructions.


Prerequisites 🔧

System Requirements

Component Minimum Specification Recommended
OS Linux (Ubuntu 22.04+) Ubuntu 22.04 LTS
CPU 4 cores 8+ cores
Memory 6 GiB 16+ GiB
Storage 20 GiB free space 50+ GiB SSD
Example AWS c5a.xlarge AWS c5a.2xlarge

⚠️ Performance Note: Lower specifications may cause initialization failures or performance degradation.

Required Software

  • Docker & Docker Compose (latest stable)
  • Go 1.23.0+ (for building from source)
  • Git (for cloning repository)

Dependencies & Security


Installation & Setup 🚀

Option 1: Automated Setup (Recommended)

For new users on clean Linux systems:

# Download and run automated setup script
curl -sSL https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/scripts/set-tb.sh | bash

ℹ️ Post-installation: Log out and back in to activate Docker permissions and aliases.

curl -sSL https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/scripts/set-tb.sh | bash

ℹ️ After the script finishes, you may need to log out and back in to activate Docker permissions and aliases. If you'd prefer to install dependencies and clone the repository manually, follow the steps below. 👇

(1) Download CB-Tumblebug

  • Clone the CB-Tumblebug repository:

    git clone https://github.com/cloud-barista/cb-tumblebug.git $HOME/go/src/github.com/cloud-barista/cb-tumblebug
    cd ~/go/src/github.com/cloud-barista/cb-tumblebug

    Optionally, you can register aliases for the CB-Tumblebug directory to simplify navigation:

    echo "alias cdtb='cd $HOME/go/src/github.com/cloud-barista/cb-tumblebug'" >> ~/.bashrc
    echo "alias cdtbsrc='cd $HOME/go/src/github.com/cloud-barista/cb-tumblebug/src'" >> ~/.bashrc
    echo "alias cdtbtest='cd $HOME/go/src/github.com/cloud-barista/cb-tumblebug/src/testclient/scripts'" >> ~/.bashrc
    source ~/.bashrc

(2) Run CB-TB and All Related Components

  • Check Docker Compose Installation:

    Ensure that Docker Engine and Docker Compose are installed on your system. If not, you can use the following script to install them (note: this script is not intended for production environments):

    # download and install docker with docker compose
    curl -sSL get.docker.com | sh
    
    # optional: add user to docker groupd
    sudo groupadd docker
    sudo usermod -aG docker ${USER}
    newgrp docker
    
    # test the docker works
    docker run hello-world
  • Start All Components Using Docker Compose:

    To run all components, use the following command:

    cd ~/go/src/github.com/cloud-barista/cb-tumblebug
    docker compose up

    This command will start all components as defined in the preconfigured docker-compose.yaml file. For configuration customization, please refer to the guide.

    The following components will be started:

    • ETCD: CB-Tumblebug KeyValue DB
    • CB-Spider: a Cloud API controller
    • CB-MapUI: a simple Map-based GUI web server
    • CB-Tumblebug: the system with API server

    image

    After running the command, you should see output similar to the following: image

    Now, the CB-Tumblebug API server is accessible at: http://localhost:1323/tumblebug/api Additionally, CB-MapUI is accessible at: http://localhost:1324

    Note: Before using CB-Tumblebug, you need to initialize it.


(3) Initialize CB-Tumblebug to configure Multi-Cloud info

To provisioning multi-cloud infrastructures with CB-TB, it is necessary to register the connection information (credentials) for clouds, as well as commonly used images and specifications.

  • Create credentials.yaml file and input your cloud credentials

    • Overview

      • credentials.yaml is a file that includes multiple credentials to use API of Clouds supported by CB-TB (AWS, GCP, AZURE, ALIBABA, etc.)
      • It should be located in the ~/.cloud-barista/ directory and securely managed.
      • Refer to the template.credentials.yaml for the template
    • Create credentials.yaml the file

      Automatically generate the credentials.yaml file in the ~/.cloud-barista/ directory using the CB-TB script

      cd ~/go/src/github.com/cloud-barista/cb-tumblebug
      ./init/genCredential.sh
    • Input credential data

      Put credential data to ~/.cloud-barista/credentials.yaml (Reference: How to obtain a credential for each CSP)

      ### Cloud credentials for credential holders (default: admin)
      credentialholder:
        admin:
          alibaba:
            # ClientId(ClientId): client ID of the EIAM application
            # Example: app_mkv7rgt4d7i4u7zqtzev2mxxxx
            ClientId:
            # ClientSecret(ClientSecret): client secret of the EIAM application
            # Example: CSEHDcHcrUKHw1CuxkJEHPveWRXBGqVqRsxxxx
            ClientSecret:
          aws:
            # ClientId(aws_access_key_id)
            # ex: AKIASSSSSSSSSSS56DJH
            ClientId:
            # ClientSecret(aws_secret_access_key)
            # ex: jrcy9y0Psejjfeosifj3/yxYcgadklwihjdljMIQ0
            ClientSecret:
          ...
      
  • Encrypt credentials.yaml into credentials.yaml.enc

    To protect sensitive information, credentials.yaml is not used directly. Instead, it must be encrypted using encCredential.sh. The encrypted file credentials.yaml.enc is then used by init.py. This approach ensures that sensitive credentials are not stored in plain text.

    • Encrypting Credentials

      init/encCredential.sh

      When executing the script, you have two options: 1) enter your password or 2) let the system generate a random passkey.

      Option 1: Entering your password:

      Image

      Option 2: Letting the system generate a random passkey, which MUST be securely stored in a safe location:

      Image

    If you need to update your credentials, decrypt the encrypted file using decCredential.sh, make the necessary changes to credentials.yaml, and then re-encrypt it.

    • Decrypting Credentials

      init/decCredential.sh

      Option 1: If encrypted using option 1, please use the same password to decrypt the file:

      Image

      Option 2: If encrypted using option 2, enter the passkey to decrypt the file:

      Image

  • (INIT) Register all multi-cloud connection information and common resources

    • How to register

      Refer to README.md for init.py, and execute the init.py script. (enter 'y' for confirmation prompts)

      cd ~/go/src/github.com/cloud-barista/cb-tumblebug
      ./init/init.sh
      • The credentials in ~/.cloud-barista/credentials.yaml.enc (encrypted file from the credentials.yaml) will be automatically registered (all CSP and region information recorded in cloudinfo.yaml will be automatically registered in the system)

        • Note: You can check the latest regions and zones of CSP using update-cloudinfo.py and review the file for updates. (contributions to updates are welcome)
      • Common images and specifications recorded in the cloudimage.csv and cloudspec.csv files in the assets directory will be automatically registered.

      • init.py will apply the hybrid encryption for secure transmission of credentials

        1. Retrieve RSA Public Key: Use the /credential/publicKey API to get the public key.
        2. Encrypt Credentials: Encrypt credentials with a randomly generated AES key, then encrypt the AES key with the RSA public key.
        3. Transmit Encrypted Data: Send the encrypted credentials and AES key to the server. The server decrypts the AES key and uses it to decrypt the credentials.

        This method ensures your credentials are securely transmitted and protected during registration. See init.py for a Python implementation. In detail, check out Secure Credential Registration Guide (How to use the credential APIs)


(4) Shutting down and Version Upgrade

  • Shutting down CB-TB and related components

    • Stop all containers by ctrl + c or type the command sudo docker compose stop / sudo docker compose down (When a shutdown event occurs to CB-TB, the system will be shutting down gracefully: API requests that can be processed within 10 seconds will be completed)

      image

    • In case of cleanup is needed due to internal system errors

      • Check and delete resources created through CB-TB
      • Delete CB-TB & CB-Spider metadata using the provided script
        cd ~/go/src/github.com/cloud-barista/cb-tumblebug
        ./init/cleanDB.sh
  • Upgrading the CB-TB & CB-Spider versions

    The following cleanup steps are unnecessary if you clearly understand the impact of the upgrade

    • Check and delete resources created through CB-TB
    • Delete CB-TB & CB-Spider metadata
      cd ~/go/src/github.com/cloud-barista/cb-tumblebug
      ./init/cleanDB.sh
    • Restart with the upgraded version

How to Use CB-TB Features 🌟

  1. 🤖 Using CB-TB MCP Server (AI Assistant Interface) (NEW!)
  2. Using CB-TB MapUI (recommended)
  3. Using CB-TB REST API (recommended)

Using CB-TB MCP Server

🚀 NEW: Control CB-Tumblebug with AI assistants like Claude!

The Model Context Protocol (MCP) Server enables natural language interaction with CB-Tumblebug through AI assistants:

  • 🧠 AI-Powered Infrastructure Management: Deploy and manage multi-cloud resources using natural language commands
  • 🔗 Seamless Integration: Works with Claude Desktop, VS Code, and other MCP-compatible clients
  • ⚡ Quick Start: Enable with make compose and uncomment MCP service in docker-compose.yaml
# Enable MCP Server (Proof of Concept)
# 1. Uncomment cb-tumblebug-mcp-server in docker-compose.yaml
# 2. Launch with Docker Compose
make compose

# Access MCP server at http://localhost:8000/sse

📖 Complete MCP Server Guide →

⚠️ Note: MCP Server is a Proof of Concept. Review code thoroughly before production use.


Using CB-TB MapUI 🗺️

Visual Infrastructure Management with Interactive Maps

CB-MapUI provides an intuitive, map-based interface for managing multi-cloud infrastructure:

  • 🗺️ Geographic Visualization: See your infrastructure deployed across the globe
  • 📊 Real-time Monitoring: Monitor resource status and performance
  • 🎮 Interactive Control: Create, manage, and control resources visually
  • 🌐 Multi-Cloud View: Unified view across all cloud providers
# Access CB-MapUI (auto-started with Docker Compose)
open http://localhost:1324

# Or run standalone MapUI container
./scripts/runMapUI.sh

CB-MapUI Interface

Features:

  • Drag-and-drop resource creation
  • Real-time infrastructure mapping
  • Cross-cloud resource relationships
  • Performance metrics overlay

📖 Learn More: CB-MapUI Repository


Using CB-TB REST API 🔌

Programmatic Multi-Cloud Infrastructure Management

CB-Tumblebug provides a comprehensive REST API for automated infrastructure management:

🌐 API Dashboard & Documentation

🔐 Authentication CB-TB uses Basic Authentication (development phase - not production-ready):

# Include base64 encoded credentials in request headers
Authorization: Basic <base64(username:password)>

🚀 Quick Infrastructure Creation Following the Quick MCI Creation Guide:

# 1. Create VM specification
curl -X POST "http://localhost:1323/tumblebug/ns/default/resources/spec" \
  -H "Authorization: Basic <credentials>" \
  -d '{"name": "web-spec", "connectionName": "aws-ap-northeast-2"}'

# 2. Create VM image  
curl -X POST "http://localhost:1323/tumblebug/ns/default/resources/image" \
  -H "Authorization: Basic <credentials>" \
  -d '{"name": "ubuntu-image", "connectionName": "aws-ap-northeast-2"}'

# 3. Create Multi-Cloud Infrastructure
curl -X POST "http://localhost:1323/tumblebug/ns/default/mci" \
  -H "Authorization: Basic <credentials>" \
  -d @mci-config.json

🛠️ Core API Categories


Multi-Cloud Infrastructure Use Cases

Deploying an MCI Xonotic (3D FPS) Game Server

Distributed Deployment of MCI Weave Scope Cluster Monitoring

Deploying MCI Jitsi Video Conferencing

Automatic Configuration of MCI Ansible Execution Environment


How to Build 🛠️

(1) Setup Prerequisites

  • Setup required tools

    • Install: git, gcc, make

      sudo apt update
      sudo apt install make gcc git
    • Install: Golang

      • Check https://golang.org/dl/ and setup Go

        • Download

          wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz;
          sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
        • Setup environment

          echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
          echo 'export GOPATH=$HOME/go' >> ~/.bashrc
          source ~/.bashrc
          echo $GOPATH
          go env
          go version

(2) Build and Run CB-Tumblebug

(2-1) Option 1: Run CB-Tumblebug with Docker Compose (Recommended)

  • Run Docker Compose with the build option

    To build the current CB-Tumblebug source code into a container image and run it along with the other containers, use the following command:

    cd ~/go/src/github.com/cloud-barista/cb-tumblebug
    sudo DOCKER_BUILDKIT=1 docker compose up --build

    This command will automatically build the CB-Tumblebug from the local source code and start it within a Docker container, along with any other necessary services as defined in the docker-compose.yml file. DOCKER_BUILDKIT=1 setting is used to speed up the build by using the go build cache technique.

(2-2) Option 2: Run CB-Tumblebug from the Makefile

  • Build the Golang source code using the Makefile

    cd ~/go/src/github.com/cloud-barista/cb-tumblebug/src
    make

    All dependencies will be downloaded automatically by Go.

    The initial build will take some time, but subsequent builds will be faster by the Go build cache.

    Note To update the Swagger API documentation, run make swag

  • Set environment variables required to run CB-TB (in another tab)

    • Check and configure the contents of cb-tumblebug/conf/setup.env (CB-TB environment variables, modify as needed)
      • Apply the environment variables to the system
        cd ~/go/src/github.com/cloud-barista/cb-tumblebug
        source conf/setup.env
      • (Optional) Automatically set the TB_SELF_ENDPOINT environment variable (an externally accessible address) using a script if needed
        • This is necessary if you want to access and control the Swagger API Dashboard from outside when CB-TB is running
        cd ~/go/src/github.com/cloud-barista/cb-tumblebug
        source ./scripts/setPublicIP.sh
  • Execute the built cb-tumblebug binary by using make run

    cd ~/go/src/github.com/cloud-barista/cb-tumblebug/src
    make run

How to Contribute 🙏

CB-TB welcomes improvements from both new and experienced contributors!

Check out CONTRIBUTING.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Seokho Son
Seokho Son

🚧 🤔 💻 👀
Jihoon Seo
Jihoon Seo

🚧 🤔 💻 👀
Yunkon (Alvin) Kim
Yunkon (Alvin) Kim

🤔 💻 👀 🚧
jmleefree
jmleefree

💻 👀
ByoungSeob Kim
ByoungSeob Kim

🤔
Sooyoung Kim
Sooyoung Kim

🐛 🤔
KANG DONG JAE
KANG DONG JAE

🤔
Youngwoo-Jung
Youngwoo-Jung

🤔
Sean Oh
Sean Oh

🤔
MZC-CSC
MZC-CSC

🐛 🤔
Eunsang
Eunsang

📓
hyokyungk
hyokyungk

📓
pjini
pjini

📓
sunmi
sunmi

📓
sglim
sglim

📖 💻
jangh-lee
jangh-lee

📖 💻
이도훈
이도훈

📖 💻
Park Beomsu
Park Beomsu

💻
Hassan Alsamahi
Hassan Alsamahi

💻
Taegeon An
Taegeon An

💻
INHYO
INHYO

💻
Modney
Modney

📖 💻
Seongbin Bernie Cho
Seongbin Bernie Cho

💻 📖
Gibaek Nam
Gibaek Nam

💻
Abidin Durdu
Abidin Durdu

💻
soyeon Park
soyeon Park

💻
Jayita Pramanik
Jayita Pramanik

📖
Mukul Kolpe
Mukul Kolpe

📖
EmmanuelMarianMat
EmmanuelMarianMat

💻
Carlos Felix
Carlos Felix

💻
Stuart Gilbert
Stuart Gilbert

💻
Ketan Deshmukh
Ketan Deshmukh

💻
Tríona Barrow
Tríona Barrow

💻
BamButz
BamButz

💻
dogfootman
dogfootman

📓
Okhee Lee
Okhee Lee

📓
joowon
joowon

📓
Sanghong Kim
Sanghong Kim

💻
Rohit Rajput
Rohit Rajput

💻
Arshad
Arshad

💻
Jongwoo Han
Jongwoo Han

💻
Yoo Jae-Sung
Yoo Jae-Sung

📓
Minhyeok LEE
Minhyeok LEE

👀
SungWoongz
SungWoongz

📓
Gabriel lima
Gabriel lima

💻
Tharun K
Tharun K

💻
Shehzad
Shehzad

💻
Ikko Eltociear Ashimine
Ikko Eltociear Ashimine

📖
Mohit Kambli
Mohit Kambli

💻


License

FOSSA Status