Rhyzome
A provisioner built upon libvirt
A DIY EC2 ⸺ Finn Herzfeld
Rhyzome runs on a host and exposes an API (currently RESTful) to perform CRUD operations on instances (virtual machines).
Requirements
Runtime
Buildtime
Building
go build -v -o rhyzomectl cmd/rhyzomectl/main.go
Language
This abstraction is how we refer to a system which can be manipulated by Rhyzome. An instance could be a Virtual Machine (VM), Unikernel, or perhaps something like a container.
TODO
Components
TODO
Daemon
TODO
TODO
Image Host
TODO
Client
TODO
Usage
Running the Daemon
As a pre-requisite, the user running the daemon needs to be in the libvirt
group.
Configuration
Rhyzome expects the configuration file to be located at /etc/rhyzome.json
.
Example config:
{
"DiskStoragePool": "default",
"Hostname": "localhost",
"Bind": ":8080",
"MetadataBind": ":8081",
"ImageHost": "http://172.18.10.3",
"CloudInit": {
"MetadataURL": "http://172.18.10.22:8081"
},
}
Creating a New Node
rhyzomectl --server http://172.18.10.22:8080 instance create \
--name mumble-server \
--base-image debian
Future
Proposed eventual architecture:
- Rhyzome Core (does not exist yet) - A central server that communicates with the Rhyzome Agent (this repo), and provides a RESTful interface for clients to interact with it. The agent no longer exposes the client-side API.