Skip to content

Instantly share code, notes, and snippets.

@blakesmith
Created January 10, 2012 07:08
Show Gist options
  • Save blakesmith/1587593 to your computer and use it in GitHub Desktop.
Save blakesmith/1587593 to your computer and use it in GitHub Desktop.
Simple pallet script
(ns pallet-test.core
(:use
[clojure.contrib.command-line])
(:require
[pallet.core :as core]
[pallet.compute :as compute]
[pallet.phase :as phase]
[pallet.crate.java :as java]
[pallet.crate.automated-admin-user :as automated-admin-user]))
(def service
(compute/service :aws))
(def base-server
(core/server-spec
:phases
{:bootstrap (phase/phase-fn (automated-admin-user/automated-admin-user))
:configure (phase/phase-fn (java/java :sun :jdk))}))
(def node
(core/node-spec
:image {:image-id "us-east-1/ami-f333fe9a"}
:network {:inbound-ports [22 80]}))
(defn group [n]
(core/group-spec "mygroup"
:count n
:extends [base-server] :node-spec node))
(defn list-nodes []
(compute/nodes service))
(defn change [n]
(core/converge (group n) :compute service)
(list-nodes))
(defn -main [& args]
(with-command-line args
"Simple pallet provisioner"
[[converge? c? "Change running node quantity"]
[list-all? l? "List all running nodes"]
[node-count n "Number of nodes to start or stop"]]
(cond
list-all? (list-nodes)
(and converge? node-count) (change (Integer/parseInt node-count)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment