Corona Build and manage virtual machines from Common Lisp.

What is this?

Corona is a library for building and controlling virtual machines. It's essentially a clone of Vagrant, with the advantage that it's written in pure Common Lisp, and can be installed simply from Quicklisp. Corona uses Vagrant Cloud as a source of base images for the virtual machines, so you can get started with any system in minutes. Corona just manages the machines. To access them through SSH, consider the trivial-ssh library. View the source code on GitHub.

Use Cases

Development Environments Corona can be used to create isolated, reproducible development environments so you and your team can work on the same system. No more 'works on my machine', no more difference between development and production. Testing If you have a library that uses an external tool, like a database server or something equally large, you can use Corona to set up a virtual machine and install whatever dependencies you need, so the user doesn't actually have to run anything on their computer. Additionally, since you can set up multiple virtual machines with different systems, you can use Corona to ensure your library works on most operating systems. This is especially useful for testing compilers and similar applications where portability is critical. Building You can use Corona as a build server: Fire up virtual machines of the operating system you want to build on, set them up with everything you need, and run the builds.

Available Systems

Usage

Defining Machines Machines are defined with the defmachine macro. The first argument to defmachine is a symbol, which will be the machine's name (Including the package). The other arguments are: system This is a system triple, a literal list with three elements which uniquely identifies a base system: The system's name, version, and architecture. memory The amount of RAM given to the VM in megabytes. Default: 512 . cpu-count The number of virtual CPUs. One by default. ip The system's IP address. By default this is not used. Examples: (defmachine my-app:db-server :system (:debian :7.4 :32) :memory 2048 :ip "192.128.65.20") (defmachine my-app:web-server :system (:freebsd :10.0 :64) :memory 512 :cpu-count 2) Controlling VM State The following six functions can be used to control the state of the virtual machines: start , stop Start and shut down the VM. If possible, shut it down gently. pause , resume Pause and resume the VM. reboot Reboot the virtual machine. poweroff Force VM shutdown. Examples: (start my-app:web-server) ;; Do some work (pause my-app:web-server) ;; Come back to work next morning (resume my-app:web-server) ;; Shut it down (stop my-app:web-server)

FAQ