node package manager


Development Cluster Management


npm install evo-garage -g

Create a containing folder for your cluster, e.g. $HOME/myCluster. Create a simple YAML file $HOME/myCluster/cluster.yml with

script: lxc
    ROOTFS: full-path-to-your-rootfs.squashfs

You can use stemcell to build a rootfs.

Now start server (remeber to use sudo as lxc requires root privilege):

sudo garage-server --clusters=$HOME/myCluster

Use the following command to list all clusters:

garage clusters

Or you can add a new cluster on the fly:

garage add-cluster path-to-dir-which-contains-cluster.yml

Let's get excited now!

garage start myCluster 1-16

It will create and start 16 nodes with IDs from 1 to 16. You can also create nodes with any IDs you like:

garage start myCluster 20 25 46-50

Use lxc-console to attach to a node:

sudo lxc-console -n "myCluster-20" -t 1

You can check the nodes status:

garage nodes myCluster

You can stop any nodes in the cluster as simple as start

garage stop myCluster 1 5 7 9 10-20

Special configuration for Linux Container

The default Linux Container support requires something to be pre-configured.

  • One bridge for accessing external network with DHCP, NAT enabled, the name should be lxcbr0
  • One bridge for cluster private network, no DHCP configured on host, the name should be evobr0

Supported Containers

It only supports Linux Container at present, but it is very easy to add other containers like QEMU, VirtualBox etc if you can build rootfs in virtual disk files. There are only 4 script files you need to add:

  • nodes it prints created node IDs one per line
  • status it accepts one parameter as node ID and displays node status as one key:value pair per line
  • start it accepts one parameter as node ID for starting the node
  • stop it accepts one parameter as node ID for stopping the node