From day one.
One source, many clouds, virtualisation environments.
One source, many deployment environments.
README.md
pallet.clj
project.clj
src
target
test
In the project.clj
file:
:plugins
[[com.palletops/pallet-lein "0.6.0-beta.7"]]
Create a pallet.clj
file:
(defproject myproject
:phases
{:configure
(plan-fn (package "postgresql-9.1"))})
$ lein pallet up
lein pallet add-service ec2 aws-ec2 xxxx xxxx
lein pallet --service ec2 up
Split out code into functions
Split out code into re-usable modules
Modules are code artifacts
(defproject myproject
:providers
{:vmfest
{:variants
[{:node-spec {:image {:os-family :ubuntu}}
:selectors #{:default :ubuntu}
...]}
:groups [...])
lein pallet up --selectors ubuntu
lein pallet up --groups db
lein pallet up --phases configure,test
(require '[my.ns :refer [group1 group2]])
(defproject myproject
:groups [group1 group])
pallet/src
is on the classpath
(def group1
(group-spec "group1"
:phases
{:configure
(plan-fn
(remote-file "f" :content "hello"))}
:roles #{:db}))
(def group1 (group-spec...))
(def group1 (group-spec...))
(defproject myproject
:groups [group1 group])
lein pallet up --roles db
Will start/stop a node for each group