Skip to content

cemerick/pallet

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pallet

Pallet is used to provision and maintain compute nodes, and aims to solve the problem of providing a consistently configured running image across a range of clouds. It is designed for use from the Clojure REPL, and from clojure scripts.

It uses jclouds to gain portable access to different cloud providers. While jclouds solves the issue of creating, destroying and configuring cloud level access to nodes, it does not address the differences in images used across providers. This is what Pallet adds.

Pallet can be used in a declaritive or an imperative fashion. defnode is used to decalre node types, specifying the image template and possibly bootstrap and other configuration. The converge function can then be used to control the number of nodes of each type that are running in your cloud, and applies the declared configuration as required. The lift function can also be used to apply configuration without adjusting node counts. Both converge and lift both accept inline definiton of configuration actions that should be run.

In pallet, low level resources can be combined in clojure functions, known as crates, that are used to specify configuration. Crates are clojure functions and can call other crates, with arguments, as required. Crates can be packaged and distributed as clojure jar files.

Pallet can also execute chef cookbooks using 'chef-solo'.

API documentation is available.

Usage

See demo documentation.

Support

On the group, or #pallet on freenode irc.

Installation

Pallet is distributed as a jar, and is available in the clojars repository.

Installation is with Leiningen, maven, or your favourite maen repository aware build tool.

Quickstart

If you just want to try out pallet, then you can follow these instructions:

  • Download the tarfile or zipfile, and unpack.

  • Install Leiningen.

  • In a shell, go to the directory containing the pallet source code and enter

      $ lein deps
      $ lein compile-java
      $ lein repl
    

You should now have a working repl, which you can use to explore pallet. You might want to make the basic pallet commands available without namespace prefix by typing the following at the repl.

    user> (use 'pallet.repl)
user> (use-pallet)

Todo

Make password handling shell character safe. Add progress reporting.

See also

chef, crane, jclouds

License

Licensed under EPL

About

Automates controlling cloud server instances. Uses jclouds, crane and chef.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Clojure 98.6%
  • Ruby 1.1%
  • Shell 0.3%