This repository provides a features of collection and aggregation for all source computing information. This is a sub-system on Cloud-Barista platform and utilizes CM-Beetle to migrate a multi-cloud.
Collecting and Aggregating Information From Source Computing framework (codename: cm-honeybee) is going to support:
- collect and aggregate information from source computing about intrastructure, software, data
- provides the Agent for collecting source computing information
Terminology
- Source Computing
The source computing, serving as the target for configuration and information collection, for the migration to multi-cloud - Target Computing
The target computing is migration target as multi-cloud
- Tested operating systems (OSs):
- Ubuntu 24.04, Ubuntu 22.04, Ubuntu 18.04, Rocky Linux 9, Windows 11
- Language:
- Go: 1.23.0
1.1. Write the configuration file.
(You can skip this step and the default settings will be used instead.)
- Configuration file name is 'cm-honeybee-agent.yaml'
- The configuration file must be placed in one of the following directories.
- .cm-honeybee-agent/conf directory under user's home directory
- 'conf' directory where running the binary
- 'conf' directory where placed in the path of 'CMHONEYBEE_AGENT_ROOT' environment variable
- Configuration options
- listen
- port : Listen port of the agent's API.
- listen
- Configuration file example
cm-honeybee-agent: listen: port: 8082
1.2. Build and run the agent binary
cd agent
make run
Or, you can run it within Docker by this command.
make run_docker
2.1. Write the configuration file.
(You can skip this step and the default settings will be used instead.)
- Configuration file name is 'cm-honeybee.yaml'
- The configuration file must be placed in one of the following directories.
- .cm-honeybee/conf directory under user's home directory
- 'conf' directory where running the binary
- 'conf' directory where placed in the path of 'CMHONEYBEE_ROOT' environment variable
- Configuration options
- listen
- port : Listen port of the server's API.
- agent
- port : Port of the agent's API.
- listen
- Configuration file example
cm-honeybee: listen: port: 8081 agent: port: 8082
2.2. Build and run the server binary
cd server
make run
Check your source group ID (sgID) after register.
- Request
curl -X 'POST' \
'http://127.0.0.1:8081/honeybee/source_group' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"description": "test migration group",
"name": "test-group"
}'
- Reply
{
"id": "b9e86d53-9fbe-4a96-9e06-627f77fdd6b7",
"name": "test-group",
"description": "test migration group"
}
Register the connection information to the source group.
- Request
curl -X 'POST' \
'http://127.0.0.1:8081/honeybee/source_group/b9e86d53-9fbe-4a96-9e06-627f77fdd6b7/connection_info' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{ "description": "NFS Server", "ip_address": "172.16.0.123", "name": "cm-nfs", "password": "some_pass", "private_key": "-----BEGIN RSA PRIVATE KEY-----\n******\n-----END RSA PRIVATE KEY-----", "ssh_port": 22, "user": "ubuntu" }'
- Reply
{
"id": "2f678139-e6e6-43e8-9722-33b834efc563",
"name": "cm-nfs",
"description": "NFS Server",
"source_group_id": "b9e86d53-9fbe-4a96-9e06-627f77fdd6b7",
"ip_address": "172.16.0.123",
"ssh_port": 22,
"user": "ubuntu",
"password": "O6fiNHqV71q5cXbJ31Y7i5xefELacROcugMz8rdo42vbJVHsN3Geh+5iqQqYJlT+gFGY2DoH8EgftrI3jWFbofUIhEe0gJWQakIO+1T3mVNb458ZFg9agoqZucAf2JJlCQFw5Wddswd88KegFcE3nqTXalQX1rspV2v2M/rJ/d7DHVh7Ej2sMxn+7ZKSdtnk3tSthJ5Z6zAcLlaequ210UZHcwGk58ByP6A+2Ga08pxoqd++z+OTkXCWCLMRpd85LBo0VHc2qDLrWhkxZDv4OBqTeT3RpgCTX9PDyjNXt7/4srSBOb7Al9DNx6ITCme+rcBRUSCmeulECCBr9CZFQ==",
"private_key": "CNTS7NvcwUj09/ZFL43GotzE68x/l6pesSRvp6/hv85ISDe1ynCxy/V8SxRIvzji2jPjcg2AwLEViPCi5vSFT5LTFQneFAXwtgJj9MdLQB4LBJVl8Bq/8MOfUsM/zltV98BX/XErzQZHrKipYmjchl1u90/Kka2zt6Ko7MugZqmmvpSy9ILOlxMPRTDdmLreW2toaFeAIfIT6NbrsYhLq+Je2FRqeET9tsabDmooQiMFIAo+t7J3vbvYuRQeEjdj66hlGzxrde/sCV8aA7hLsupiXOoJKxLTLfiha2oGOWtF9ofvEoQulX1f8M98zMl+VXFpYgx2SSxgpWFx0iTfhA==",
"public_key": "",
"status": "",
"failed_message": ""
}
Below example is saving infrastructure information of all connection in the source group.
curl -X 'POST' \
'http://127.0.0.1:8081/honeybee/source_group/b9e86d53-9fbe-4a96-9e06-627f77fdd6b7/import/infra' \
-H 'accept: application/json'
Below example is getting saved infrastructure information of all connection in the source group.
curl -X 'GET' \
'http://127.0.0.1:8081/honeybee/source_group/b9e86d53-9fbe-4a96-9e06-627f77fdd6b7/infra' \
-H 'accept: application/json'
Below example is getting refined, saved infrastructure information of all connection in the source group.
curl -X 'GET' \
'http://127.0.0.1:8081/honeybee/source_group/b9e86d53-9fbe-4a96-9e06-627f77fdd6b7/infra/refined' \
-H 'accept: application/json'
Check if CM-Honeybee agent is running
curl http://localhost:8082/honeybee-agent/readyz
# Output if it's running successfully
# {"message":"CM-Honeybee Agent API server is ready"}
Check if CM-Honeybee server is running
curl http://localhost:8081/honeybee/readyz
# Output if it's running successfully
# {"message":"CM-Honeybee API server is ready"}
There are default private key and public key used for encrypt connection info's password from the honeybee server. (Located in server/_default_key) For security, run these commands to generate new key files.
docker exec cm-honeybee rm /root/.cm-honeybee/honeybee.key
docker exec cm-honeybee rm /root/.cm-honeybee/honeybee.pub
docker restart cm-honeybee
If you want to use private key file with other modules like cm-grasshopper, run this command.
mkdir keys
docker cp cm-honeybee:/root/.cm-honeybee/honeybee.key keys/
docker cp cm-honeybee:/root/.cm-honeybee/honeybee.pub keys/
Now, mount the created folder to the honeybee server container. For docker compose, add these lines.
volumes:
- ./keys/honeybee.key:/root/.cm-honeybee/honeybee.key
- ./keys/honeybee.pub:/root/.cm-honeybee/honeybee.pub
Now, you can copy ./keys/honeybee.key file to other module.
Those encrypted values are always changes with each request by RSA algorithm.
- Build and run the Honeybee server.
cd server make run
- Copy
honeybee.key
file from~/.cm-honeybee
or the path of 'CMHONEYBEE_ROOT' environment variable. - See this commit to modify your source.