rhyzome

module
v0.0.0-...-7ca99a0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2021 License: AGPL-3.0

README

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
  • libvirt-daemon >=5.0.0
Buildtime
  • Go >=1.11

Building

go build -v -o rhyzomectl cmd/rhyzomectl/main.go 

Language

  • Instance

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.

  • libvirt

TODO

Components

TODO

Daemon

TODO

Metadata Server

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.

Directories

Path Synopsis
cli
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL