Signed-off-by: Erik Hollensbe <firstname.lastname@example.org>
|1 week ago|
|clients||2 weeks ago|
|cmd||1 week ago|
|design||2 weeks ago|
|gen||2 weeks ago|
|pkg||2 weeks ago|
|statik||1 week ago|
|ui||1 week ago|
|.gitignore||2 weeks ago|
|.golangci.yml||2 weeks ago|
|LICENSE||2 weeks ago|
|Makefile||1 week ago|
|README.md||1 week ago|
|constants.go||2 weeks ago|
|go.mod||1 week ago|
|go.sum||1 week ago|
|spin_apiserver.go||2 weeks ago|
|spin_broker.go||2 weeks ago|
|spin_registry.go||2 weeks ago|
spin allows you to manage VMs on your linux bare metal host with ease. Powered by qemu and systemd, it stands upon reliable technology providing its own framework for applying configuration in a safely concurrent, idempotent way, allowing you to perform many small operations on VMs in a quick and efficient way.
In short, we do the high level stuff and leave the big iron tools doing what they do best.
spin is fully backed by a openapi specification for its API calls, from the high level to the blow-your-foot-off calls. Generate your own, or check out our clients directory for a good set of golang ones.
For installations, we only support "development mode" at the moment. For a quick start, try this script on for size:
#!/usr/bin/env bash go get -d code.hollensbe.org/erikh/spin cd $GOPATH/code.hollensbe.org/erikh/spin make servers make install-local
Binaries will be in
To interact with the
spin tool (which has help; try
spin help), try the
(please note the servers must be running, provided by
# this is necessary to create vms for now, soon this will not be # first argument is the name of the volume, second is the path to the volume's files spin-registry message storage volume create test ~/.config/spin/images/test # the second argument (`test`) here is the volume name provided above. the # machine's image will be put in this directory under the name `my_cool_image`. spin vm create --cdrom ~/path/to/some.iso my_cool_image test 1 # the id above is the id of the vm newly created; it can be started like so: spin start 1 # to access it, you can get a console by starting the console server and # viewing a specific console (will open a link in your browser): spin serve & spin view 1 # stop and shutdown have a distinction; stop will force terminate through # systemd if shutdown doesn't succeed; shutdown will merely try to stop it # through normal ACPI shutdown signals. spin shutdown 1 spin stop 1 ## # some other commands: ## spin vm list # lists all vms by id spin vm image list 1 # lists attached devices to my_cool_image spin vm image detach 1 1 # detaches cdrom, index 1 on my_cool_image
make stop-servers to stop the servers when you are done playing! :D
Just some notes:
goa gen is done on each
make test run, that includes the autotester, so you
can use it to refactor designs fairly quick.
golangci-lint is required to run the tests.
make install-deps to install it
make autotest will start an autotester using
reflex. It's very handy!
The tests are currently pretty safe to run, they don't generate in any place
/tmp and the project directory.
.gitignore is programmed
test and autotest leverage the golang test cache for faster
response time, but you can
make test-all to force a run of all tests.
The architecture is a mix of the following technologies:
And it contains the following sub-components:
Erik Hollensbe email@example.com