https://github.com/cloud-barista/cb-tumblebug
Cloud-Barista Multi-Cloud Infra Management Framework
https://github.com/cloud-barista/cb-tumblebug
ai benchmarking cb-tumblebug cloud cloud-barista cloud-computing csp go hacktoberfest iaas kubernetes llm multi-cloud multicloud orchestration vm
Last synced: 5 days ago
JSON representation
Cloud-Barista Multi-Cloud Infra Management Framework
- Host: GitHub
- URL: https://github.com/cloud-barista/cb-tumblebug
- Owner: cloud-barista
- License: apache-2.0
- Created: 2019-09-23T07:12:42.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2025-10-24T08:01:46.000Z (7 months ago)
- Last Synced: 2025-10-24T08:27:37.438Z (7 months ago)
- Topics: ai, benchmarking, cb-tumblebug, cloud, cloud-barista, cloud-computing, csp, go, hacktoberfest, iaas, kubernetes, llm, multi-cloud, multicloud, orchestration, vm
- Language: Go
- Homepage:
- Size: 36 MB
- Stars: 67
- Watchers: 7
- Forks: 52
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Cloud-Barista ๐
# CB-Tumblebug (Multi-Cloud Infra Management)
[](https://goreportcard.com/report/github.com/cloud-barista/cb-tumblebug)
[](https://github.com/cloud-barista/cb-tumblebug/search?l=go)
[](https://github.com/cloud-barista/cb-tumblebug/blob/main/go.mod)
[](#)
[](https://pkg.go.dev/github.com/cloud-barista/cb-tumblebug@main)
[](https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=cloud-barista%2Fcb-tumblebug)
[](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/refs/heads/main/src/interface/rest/docs/swagger.yaml)
[](https://github.com/cloud-barista/cb-tumblebug/blob/main/LICENSE)
[](https://github.com/cloud-barista/cb-tumblebug/releases/latest)
[](https://github.com/cloud-barista/cb-tumblebug/releases)
[](https://github.com/cloud-barista/cb-tumblebug/actions/workflows/continuous-integration.yaml?query=workflow%3AContinuous-Integration-%28CI%29)
[](https://cloud-barista.slack.com/archives/CJQ7575PU)
[](#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
- [๐ Overview](https://github.com/cloud-barista/cb-tumblebug/wiki/CBโTumblebug-Overview) | [โจ Features](https://github.com/cloud-barista/cb-tumblebug/tree/main/docs/feature_guide) | [๐๏ธ Architecture](https://github.com/cloud-barista/cb-tumblebug/wiki/CBโTumblebug-Architecture)
- [โ๏ธ Supported Cloud Providers & Resources](https://docs.google.com/spreadsheets/d/1idBoaTxEMzuVACKUIMIE9OY1rPO-7yZ0y7Rs1dBG0og/edit?usp=sharing)

> ๐ **Note**: Reference only - functionality not guaranteed. Regular updates are made.
> Kubernetes support is currently WIP with limited features available.
---
๐ 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**
- Control CB-Tumblebug through AI assistants like Claude and VS Code
- Natural language interface for infrastructure provisioning and management using MCP (Model Context Protocol)
- Streamable HTTP transport for modern MCP compatibility
- [๐ MCP Server Guide](src/interface/mcp/README.md) | [๐ Quick Start](src/interface/mcp/README.md#-quick-start-with-docker-compose-recommended)
**๐ฎ GPU-Powered Multi-Cloud LLM Deployment**
[](https://www.youtube.com/watch?v=SD9ZoT_OZpQ)
- Deploy GPU instances across multiple clouds for AI/ML workloads
- [๐ง LLM Scripts & Examples](https://github.com/cloud-barista/cb-tumblebug/tree/main/scripts/usecases/llm)
---
## Table of Contents
1. [โก Quick Start](#quick-start-)
2. [๐ง Prerequisites](#prerequisites-)
3. [๐ Installation & Setup](#installation--setup-)
4. [๐ How to Use](#how-to-use-cb-tb-features-)
5. [๐ ๏ธ Development](#development-%EF%B8%8F)
6. [๐ค Contributing](#how-to-contribute-)
---
## Quick Start โก
Get CB-Tumblebug running in under 5 minutes:
```bash
# 1. Automated setup (recommended for new users)
curl -sSL https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/scripts/set-tb.sh | bash
# โ Copies .env.example โ .env and sets default API username and password for all sub-systems
# Optionally edit .env to use custom credentials before starting.
# 2. Start all services (auto-initializes OpenBao)
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make up
# 3. Generate credentials.yaml from template (./init/genCredential.sh)
make gen-cred
# 4. Manually Edit ~/.cloud-barista/credentials.yaml with your cloud credentials
# vi ~/.cloud-barista/credentials.yaml
# 5. Encrypt credentials.yaml to credentials.yaml.enc (./init/encCredential.sh)
make enc-cred
# 6. Run initialization script (./init/init.sh)
make init
# 7. Access services
# - API: http://localhost:1323/tumblebug/api
# - MapUI: http://localhost:1324
# - MCP Server: http://localhost:8000/mcp (if enabled)
```
> โ **Manual setup (without set-tb.sh)**:
>
> - Copy `.env.example` to `.env` and
> - Set API username and password of all sub-systems in `.env` before running `make up`.
### Usage Scenarios
| Scenario | Commands |
| -------------------------------------------- | -------------------------------------------------------------------------------- |
| **Quick start** | `make up` โ `make gen-cred` โ `edit credentials` โ `make enc-cred` โ `make init` |
| **Restart** (after reboot) | `make up` |
| **Reset DB only** (keep OpenBao credentials) | `make clean-db` โ `make up` |
| **Full reset** (including OpenBao) | `make clean-all` โ `make up` โ `make init` |
> ๐ก **New to CB-Tumblebug?** Follow the [detailed setup guide](#installation--setup-) 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.26.2+** (for building from source)
- **Git** (for cloning repository)
### Dependencies & Security
- ๐ฆ [View Dependencies](https://github.com/cloud-barista/cb-tumblebug/network/dependencies)
- ๐ก๏ธ [Software Bill of Materials (SBOM)](https://github.com/cloud-barista/cb-tumblebug/dependency-graph/sbom)
---
## Installation & Setup ๐
### Option 1: Automated Setup (Recommended)
For new users on clean Linux systems:
- https://github.com/cloud-barista/cb-tumblebug/blob/main/scripts/set-tb.sh
-
```bash
# Download and run automated setup script
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:
```bash
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:
```bash
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):
```bash
# 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:
```bash
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make up
```
This command starts all services and **automatically initializes and unseals OpenBao** on first run. For configuration customization, please refer to the [guide](https://github.com/cloud-barista/cb-tumblebug/discussions/1669).The following components will be started:
- CB-Tumblebug: the system with API server
- CB-Spider: a Cloud API controller
- MC-Terrarium: multi-cloud infrastructure enrichment (VPN, etc.)
- OpenBao: secrets management for CSP credentials (Vault-compatible)
- ETCD: CB-Tumblebug KeyValue DB
- PostgreSQL: Specs and Images storage
- CB-MapUI: a simple Map-based GUI web server
- CB-Tumblebug MCP Server: AI assistant interface (if enabled)
- Traefik: Reverse proxy for secure access
**Container Architecture Overview:**
```mermaid
graph TB
subgraph "External Access"
User[๐ค Client
CLI/Browser]
AI[๐ค AI Assistant
Claude/VS Code]
end
subgraph "Docker Compose Environment"
subgraph "Frontend & Interfaces"
UI[CB-MapUI
:1324]
MCP[TB-MCP Server
:8000]
Proxy[Traefik Proxy
:80/:443]
end
subgraph "Backend Services"
TB[CB-Tumblebug
:1323
Multi-Cloud Management]
ETCD[ETCD
:2379
Key-Value DB]
PG[PostgreSQL
:5432
Specs/Images DB]
Spider[CB-Spider
:1024
Cloud API Abstraction]
Terrarium[MC-Terrarium
:8055
Cloud API Enrichment]
OpenBao[OpenBao
:8200
CSP Credentials]
end
end
subgraph CloudProviders["Cloud Providers"]
AWS[AWS]
Azure[Azure]
GCP[GCP]
Alibaba[Alibaba]
Tencent[Tencent]
IBM[IBM]
NCP[NCP]
NHN[NHN]
KT[KT]
OpenStack[OpenStack]
Others[CSP]
end
%% User connections
User -->|HTTP/HTTPS| Proxy
User -->|HTTP| UI
User -->|HTTP| TB
AI -->|MCP HTTP| MCP
%% Proxy routing
Proxy -->|Route| UI
%% Internal service connections
UI -->|API calls| TB
MCP -->|REST API| TB
TB -->|gRPC| ETCD
TB -->|SQL| PG
TB -->|REST API| Spider
TB -->|Secrets| OpenBao
Terrarium -->|Secrets| OpenBao
TB -->|REST API| Terrarium
%% Cloud connections
Terrarium -->|OpenTofu| CloudProviders
Spider -->|Cloud APIs| CloudProviders
TB -->|Direct API
Route53| CloudProviders
%% Invisible rank constraints: force Cloud Providers below Docker Compose
PG ~~~ OpenStack
ETCD ~~~ Azure
Spider ~~~ GCP
Terrarium ~~~ Azure
TB ~~~ Others
OpenBao ~~~ AWS
%% Styling
classDef frontend fill:#e3f2fd,stroke:#1976d2
classDef core fill:#fff8e1,stroke:#f57f17,stroke-width:2px
classDef backend fill:#f3e5f5,stroke:#7b1fa2
classDef datastore fill:#eceff1,stroke:#607d8b
classDef secrets fill:#fce4ec,stroke:#c62828
classDef cloud fill:#fff3e0,stroke:#f57c00
class UI,MCP,Proxy frontend
class TB core
class Spider,Terrarium backend
class ETCD,PG datastore
class OpenBao secrets
class AWS,Azure,GCP,Alibaba,Tencent,IBM,NCP,NHN,KT,OpenStack,Others cloud
```

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

**Service Endpoints:**
- **CB-Tumblebug API**: http://localhost:1323/tumblebug/api
- **CB-MapUI**: http://localhost:1324 (direct) or https://cb-mapui.localhost (via Traefik with SSL)
- **MCP Server**: http://localhost:8000/mcp (if enabled)
- **Traefik Dashboard**: http://localhost:8080 (reverse proxy monitoring)
**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`](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/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
```bash
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](https://github.com/cloud-barista/cb-tumblebug/wiki/How-to-get-public-cloud-credentials))
```example
### Cloud credentials for credential holders (default: admin)
### Holder naming rules: only lowercase alphanumeric and underscores [a-z0-9_]
credentialholder:
admin:
alibaba:
# Example: app_mkv7rgt4d7i4u7zqtzev2mxxxx
AccessKeyId:
# Example: CSEHDcHcrUKHw1CuxkJEHPveWRXBGqVqRsxxxx
AccessKeySecret:
aws:
# ex: AKIASSSSSSSSSSS56DJH
aws_access_key_id:
# ex: jrcy9y0Psejjfeosifj3/yxYcgadklwihjdljMIQ0
aws_secret_access_key:
...
```
- 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
```bash
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:

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

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
```bash
init/decCredential.sh
```
Option 1: If encrypted using option 1, please use the same password to decrypt the file:

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

- (INIT) Register all multi-cloud connection information and common resources
- How to register
Refer to [README.md for init.py](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/README.md), and execute the [`init.py`](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/init.py) script by the [`init.sh`](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/init.sh). (enter 'y' for confirmation prompts)
`init.sh --help` will show the available options.
You can also simply use the `make init` command as follows:
```bash
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make init
```
- 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`](https://github.com/cloud-barista/cb-tumblebug/blob/main/assets/cloudinfo.yaml) will be automatically registered in the system)
- Note: You can check the latest regions and zones of CSP using [`update-cloudinfo.py`](https://github.com/cloud-barista/cb-tumblebug/blob/main/scripts/misc/update-cloudinfo.py) and review the file for updates. (contributions to updates are welcome)
- Common images and specifications recorded in the [`cloudimage.csv`](https://github.com/cloud-barista/cb-tumblebug/blob/main/assets/cloudimage.csv) and [`cloudspec.csv`](https://github.com/cloud-barista/cb-tumblebug/blob/main/assets/cloudspec.csv) files in the [`assets`](https://github.com/cloud-barista/cb-tumblebug/tree/main/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](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/init.py#L150) for a Python implementation.
In detail, check out [Secure Credential Registration Guide (How to use the credential APIs)](https://github.com/cloud-barista/cb-tumblebug/discussions/1773)
- (INIT) Register CSP credentials into OpenBao for MC-Terrarium
`make init` also registers CSP credentials into **OpenBao** (Vault-compatible secrets manager) so that **MC-Terrarium** can access them at runtime via its OpenTofu templates. This happens in the same `init.py` run โ no separate step is needed.
```
~/.cloud-barista/credentials.yaml.enc
โ init.py (decrypt in-memory)
โโโ Tumblebug API โ CB-Spider (cloud connections)
โโโ OpenBao KV v2 (โ Terrarium's OpenTofu templates)
```
> For a detailed interaction diagram and step-by-step breakdown of the entire `make init` flow, see the **[`make init` Workflow Guide](docs/feature_guide/make-init-workflow.md)**.
> For full details on OpenBao credential paths, Makefile targets, and troubleshooting, see [init/README.md](https://github.com/cloud-barista/cb-tumblebug/blob/main/init/README.md).
---
### (4) Shutting down and Version Upgrade
- Shutting down CB-TB and related components
- Stop all containers by `ctrl` + `c` or type the command `docker compose stop` / `docker compose down` / `make 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)

- In case of cleanup is needed due to internal system errors
- Check and delete resources created through CB-TB
- Delete CB-TB, CB-Spider, and MC-Terrarium metadata using the provided script
```bash
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make clean-db
```
- For a full reset including OpenBao (requires re-initialization of credentials):
```bash
make clean-all
```
- 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, and MC-Terrarium metadata
```bash
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
make clean-db
```
- Restart with the upgraded version
---
## How to Use CB-TB Features ๐
1. [๐ค Using CB-TB MCP Server (AI Assistant Interface)](#using-cb-tb-mcp-server) (NEW!)
2. [Using CB-TB MapUI](#using-cb-tb-mapui) (recommended)
3. [Using CB-TB REST API](#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 (via proxy), VS Code (direct), and other MCP-compatible clients
- **๐ก Modern Protocol**: Uses Streamable HTTP transport (current MCP standard)
- **โก Quick Start**: Enable with `make up` and uncomment MCP service in `docker-compose.yaml`
```bash
# Enable MCP Server (Proof of Concept)
# 1. Uncomment cb-tumblebug-mcp-server in docker-compose.yaml
# 2. Launch with Docker Compose
make up
# Access MCP server at http://localhost:8000/mcp
```
**๐ [Complete MCP Server Guide โ](src/interface/mcp/README.md)**
โ ๏ธ **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
```bash
# Access CB-MapUI (auto-started with Docker Compose)
open http://localhost:1324
# Or run standalone MapUI container
./scripts/runMapUI.sh
```

**Features:**
- Drag-and-drop resource creation
- Real-time infrastructure mapping
- Cross-cloud resource relationships
- Performance metrics overlay
> ๐ **Learn More**: [CB-MapUI Repository](https://github.com/cloud-barista/cb-mapui)
---
### Using CB-TB REST API ๐
**Programmatic Multi-Cloud Infrastructure Management**
CB-Tumblebug provides a comprehensive REST API for automated infrastructure management:
**๐ API Dashboard & Documentation**
- **Interactive API Explorer**: [http://localhost:1323/tumblebug/api](http://localhost:1323/tumblebug/api)
- **Live Documentation**: [](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml)
**๐ Authentication**
CB-TB uses Basic Authentication (development phase - not production-ready):
```bash
# Include base64 encoded credentials in request headers
Authorization: Basic
```
**๐ Quick Infrastructure Creation**
Following the [Quick Infra Creation Guide](https://github.com/cloud-barista/cb-tumblebug/discussions/1570):
```bash
# 1. Create compute spec
curl -X POST "http://localhost:1323/tumblebug/ns/default/resources/spec" \
-H "Authorization: Basic " \
-d '{"name": "web-spec", "connectionName": "aws-ap-northeast-2"}'
# 2. Create OS image
curl -X POST "http://localhost:1323/tumblebug/ns/default/resources/image" \
-H "Authorization: Basic " \
-d '{"name": "ubuntu-image", "connectionName": "aws-ap-northeast-2"}'
# 3. Create Multi-Cloud Infrastructure
curl -X POST "http://localhost:1323/tumblebug/ns/default/infra" \
-H "Authorization: Basic " \
-d @infra-config.json
```
**๐ ๏ธ Core API Categories**
- **Infrastructure Resources**: Compute specs, images, networks, security groups
- **Multi-Cloud Infrastructure (Infra)**: Provision and manage distributed infrastructure
- **Monitoring & Control**: Performance metrics, scaling, lifecycle management
- [Infra Resource Model & Lifecycle Management](docs/feature_guide/infra-resource-model-and-lifecycle-management.md)
- **Credentials & Connections**: Secure cloud provider configuration
- [Create access key object](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml#/%5BInfra%20resource%5D%20Resource%20Access%20key%20management/post_ns__nsId__resources_sshKey)
- Create, view, control, execute remote commands, shut down, and delete Infra using the Infra(multi-cloud infrastructure service) management APIs
- [Create Infra](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml#/%5BInfra%20service%5D%20Infra%20Provisioning%20management/post_ns__nsId__infra)
- [Infra remote command](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml#/%5BInfra%20service%5D%20Infra%20Remote%20command/post_ns__nsId__cmd_infra__infraId_)
- [View and control Infra](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml#/%5BInfra%20service%5D%20Infra%20Provisioning%20management/get_ns__nsId__infra__infraId_)
- [Terminate and Delete Infra](https://cloud-barista.github.io/api/?url=https://raw.githubusercontent.com/cloud-barista/cb-tumblebug/main/src/interface/rest/docs/swagger.yaml#/%5BInfra%20service%5D%20Infra%20Provisioning%20management/delete_ns__nsId__infra__infraId_)
- CB-TB optimal and dynamic provisioning
- [CB-TB optimal and dynamic provisioning](https://github.com/cloud-barista/cb-tumblebug/wiki/Dynamic-and-optimal-infra-provisioning-guide)
---
### Multi-Cloud Infrastructure Use Cases
#### Deploying an Infra Xonotic (3D FPS) Game Server
- [Deploy Xonotic game servers on Infra](https://github.com/cloud-barista/cb-tumblebug/wiki/Deploy-Xonotic-game-sever-in-a-Cloud-via-CB-Tumblebug)
#### Distributed Deployment of Infra Weave Scope Cluster Monitoring
- [Install Weave Scope cluster on Infra](https://github.com/cloud-barista/cb-tumblebug/wiki/Infra-WeaveScope-deployment)
#### Deploying Infra Jitsi Video Conferencing
- [Install Jitsi video conferencing on Infra](https://github.com/cloud-barista/cb-tumblebug/wiki/Infra-Jitsi-deployment)
#### Automatic Configuration of Infra Ansible Execution Environment
- [Automatically configure Ansible execution environment on Infra](https://github.com/cloud-barista/cb-tumblebug/wiki/Infra-Ansible-deployment)
---
## How to Build ๐ ๏ธ
### (1) Setup Prerequisites
- Setup required tools
- Install: git, gcc, make
```bash
sudo apt update
sudo apt install make gcc git
```
- Install: Golang
- Check https://golang.org/dl/ and setup Go
- Download
```bash
wget https://go.dev/dl/go1.26.2.linux-amd64.tar.gz;
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.26.2.linux-amd64.tar.gz
```
- Setup environment
```bash
echo 'export PATH=/usr/local/go/bin:$HOME/go/bin:$PATH' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
```
```bash
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:
```bash
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
```bash
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`
- API documentation file will be generated at `cb-tumblebug/src/interface/rest/docs/swagger.yaml`
- API documentation can be viewed in a web browser at http://localhost:1323/tumblebug/api (provided when CB-TB is running)
- Detailed information on [how to update the API](https://github.com/cloud-barista/cb-tumblebug/wiki/API-Document-Update)
- 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
```bash
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
```bash
cd ~/go/src/github.com/cloud-barista/cb-tumblebug
source ./scripts/setPublicIP.sh
```
- Execute the built cb-tumblebug binary by using `make run`
```bash
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](https://github.com/cloud-barista/cb-tumblebug/blob/main/CONTRIBUTING.md).
## Contributors โจ
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

Seokho Son
๐ง ๐ค ๐ป ๐

Jihoon Seo
๐ง ๐ค ๐ป ๐

Yunkon (Alvin) Kim
๐ค ๐ป ๐ ๐ง

jmleefree
๐ป ๐

ByoungSeob Kim
๐ค

Sooyoung Kim
๐ ๐ค

KANG DONG JAE
๐ค

Youngwoo-Jung
๐ค

Sean Oh
๐ค

MZC-CSC
๐ ๐ค

Eunsang
๐

hyokyungk
๐

pjini
๐

sunmi
๐

sglim
๐ ๐ป

jangh-lee
๐ ๐ป

์ด๋ํ
๐ ๐ป

Park Beomsu
๐ป

Hassan Alsamahi
๐ป

Taegeon An
๐ป

INHYO
๐ป

Modney
๐ ๐ป

Seongbin Bernie Cho
๐ป ๐

Gibaek Nam
๐ป

Abidin Durdu
๐ป

soyeon Park
๐ป

Jayita Pramanik
๐

Mukul Kolpe
๐

EmmanuelMarianMat
๐ป

Carlos Felix
๐ป

Stuart Gilbert
๐ป

Ketan Deshmukh
๐ป

Trรญona Barrow
๐ป

BamButz
๐ป

dogfootman
๐

Okhee Lee
๐

joowon
๐

Sanghong Kim
๐ป

Rohit Rajput
๐ป

Arshad
๐ป

Jongwoo Han
๐ป

Yoo Jae-Sung
๐

Minhyeok LEE
๐

SungWoongz
๐

Gabriel lima
๐ป

Tharun K
๐ป

Shehzad
๐ป

Ikko Eltociear Ashimine
๐

Mohit Kambli
๐ป

Hannie Zang
๐ป

Jinhyeok
๐

DaeyeongCho
๐

lee hyeok
๐ ๐ป
---
---
## License
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fcloud-barista%2Fcb-tumblebug?ref=badge_large)
---