I'm investigating some possible web projects and figure it's time I
start experimenting with proper deployment strategies. Every time I've
looked at tools like Puppet in the past, I've been scared off by what
seems like an awful lot of complexity. I'd love to get over this hump
and I'm a huge fan of Clojure, so Pallet seems like a good bet - but
I'm struggling a little to get a clear picture of where things are at
right now.
Like with many new projects, there's a lot of documentation and
examples online that are outdated and (frustratingly) many of them
don't mention what version(s) they're targeting. As a result it can be
difficult to pinpoint the cause of a problem: is it because I've done
something wrong on my end, or is the example inappropriate for the
version of Pallet I'm running?
Instead of spending days trying to sift through the info out there, I
figure I'd ask here since the response would probably be useful to
some others also? Apologies for the long post!
In no particular order:
1. Current recommended stable-ish version of Pallet? Is this
[org.cloudhoist/pallet "0.6.5"]? Does this support Clojure 1.3.0? If
not, are there any recommended version(s) that do? [org.cloudhoist/
pallet "0.7.0-SNAPSHOT"]?
2. Is Pallet considered more or less production-ready at this point?
Is JClouds?
3. Is Pallet-lein (https://github.com/pallet/pallet-lein) in decent
shape? Is it recommended? Does it support Clojure 1.3.0?
4. Is there a single canonical URL for up-to-date examples/references/
etc.? palletops.com? The Github page (https://github.com/pallet/
pallet)?
5. Is the expectation that the API remain fairly stable from here-out,
or is it still a work-in-progress?
6. Does Pallet "scale down" well? I.e. if I initially just want a
single server running a little database and web-app, is Pallet still a
good fit?
7. How does Pallet relate to Chef/Puppet/etc.? I get the impression
Pallet can consume Chef recipes... where can I get current info on
that?
On a more general note, I also wonder if someone could recommend a
good starting point (book/URL?) for an admin novice to start learning
about the use of tools like Pallet [/Puppet/Chef/etc.]. There's a
bunch of jargon that gets thrown around in most tutorials and I wonder
if that doesn't present an unnecessarily high learning-curve for many
new users like me.
A simple: "This is is why you want a config tool like X", "Here's an
example of what config tool X can do for you", "This is an example of
how you write a recipe/crate/etc. when you want to install application
Y but there's no standard recipe/crate/etc. for application Y". I'd
kill for some kind of diagram: cloud API instantiates server, JAR is
sent to server via SSH, JAR contains DSL configuration scripts and
Puppet stuff, Puppet stuff reads scripts and executes them as shell
scripts, etc.
Is there something like that anywhere? If not, any suggested best-
approximation?
Thanks _so_ much for any input- really appreciate the help (not to
mention the great work on Pallet itself)!
--
Peter Taoussanis
Welcome to Pallet. See my answers below:
>
> Like with many new projects, there's a lot of documentation and
> examples online that are outdated and (frustratingly) many of them
> don't mention what version(s) they're targeting. As a result it can be
> difficult to pinpoint the cause of a problem: is it because I've done
> something wrong on my end, or is the example inappropriate for the
> version of Pallet I'm running?
We might suffer from this malady too here, but we're actively working
to fix it. The examples are functional but a little bit outdated in
terms of API usage. We recently we discovered that one of the
transitive dependencies in the example projects has vanished from the
original repository, and there is a workaround for this in here:
http://groups.google.com/group/pallet-clj/browse_thread/thread/9bbc4db409022a44
.
Otherwise, the examples were reviewed not so long ago and should still
work.
>
> Instead of spending days trying to sift through the info out there, I
> figure I'd ask here since the response would probably be useful to
> some others also? Apologies for the long post!
>
> In no particular order:
>
> 1. Current recommended stable-ish version of Pallet? Is this
> [org.cloudhoist/pallet "0.6.5"]? Does this support Clojure 1.3.0? If
> not, are there any recommended version(s) that do? [org.cloudhoist/
> pallet "0.7.0-SNAPSHOT"]?
>
0.6.6 is the latest and greatest release. 0.7.x is still very alpha
and under a lot of change. Unfortunately, 0.6.x is not compatible with
Clojure 1.3.
> 2. Is Pallet considered more or less production-ready at this point?
> Is JClouds?
>
Both Pallet and JClouds are used in production in services that you
probably use every day :)
> 3. Is Pallet-lein (https://github.com/pallet/pallet-lein) in decent
> shape? Is it recommended? Does it support Clojure 1.3.0?
>
It is in good shape, but again, not supporting Clojure 1.3 with the
stable version.
> 4. Is there a single canonical URL for up-to-date examples/references/
> etc.? palletops.com? The Github page (https://github.com/pallet/
> pallet)?
>
No. But that won't be for long as I am actively working on an official
pallet website with all the documentation, examples, tutorials and
everything you need to get pallet running. Stay tuned. It should be
going live in 2011, so that means it is a matter of days. The current
github page is the best place to start for now.
> 5. Is the expectation that the API remain fairly stable from here-out,
> or is it still a work-in-progress?
This is hard to answer. The API has been stable for quite a while but
our users keep pushing pallet to places we never thought we'd go to (a
good thing!) and maybe some api changes will be required. In the past
we have been pretty good at keeping backward compatibility, as any
code written in Pallet 0.4.x and even older will run practically
unmodified in the latest release, and that's after our biggest API
change that took place in 0.5.0.
>
> 6. Does Pallet "scale down" well? I.e. if I initially just want a
> single server running a little database and web-app, is Pallet still a
> good fit?
>
Yes. There is still a learning curve needed, which will depend very
much on how much your project deviates from the 'standards', so to
speak. If your configuration is not very opinionated, then the
learning curve will be quite low, otherwise you'll need to learn a bit
more to make customizations. We're here to help though!
> 7. How does Pallet relate to Chef/Puppet/etc.? I get the impression
> Pallet can consume Chef recipes... where can I get current info on
> that?
I'll let Hugo answer this one :)
>
> On a more general note, I also wonder if someone could recommend a
> good starting point (book/URL?) for an admin novice to start learning
> about the use of tools like Pallet [/Puppet/Chef/etc.]. There's a
> bunch of jargon that gets thrown around in most tutorials and I wonder
> if that doesn't present an unnecessarily high learning-curve for many
> new users like me.
>
This one is quite well regarded:
http://www.amazon.com/Web-Operations-Keeping-Data-Time/dp/1449377440/ref=sr_1_6?ie=UTF8&qid=1324276857&sr=8-6
> A simple: "This is is why you want a config tool like X", "Here's an
> example of what config tool X can do for you", "This is an example of
> how you write a recipe/crate/etc. when you want to install application
> Y but there's no standard recipe/crate/etc. for application Y". I'd
> kill for some kind of diagram: cloud API instantiates server, JAR is
> sent to server via SSH, JAR contains DSL configuration scripts and
> Puppet stuff, Puppet stuff reads scripts and executes them as shell
> scripts, etc.
>
> Is there something like that anywhere? If not, any suggested best-
> approximation?
These are the closest approximations that we have now:
http://www.scribd.com/doc/39275742/Pallet-Bacug
http://www.scribd.com/doc/40391319/Pallet-Gogrid
http://www.scribd.com/doc/51959794/Pallet-at-ArchCamp
and http://www.youtube.com/watch?v=adzMkR0d0Uk
>
> Thanks _so_ much for any input- really appreciate the help (not to
> mention the great work on Pallet itself)!
>
Please keep asking questions, we like them! As I mentioned before,
we're in the process of aggregating all the info about pallet,
updating it and putting it in one place that is easy to find. Your
questions are helping us with this job :)
Toni.
> --
> Peter Taoussanis
>> 7. How does Pallet relate to Chef/Puppet/etc.? I get the impression
>> Pallet can consume Chef recipes... where can I get current info on
>> that?
>
> I'll let Hugo answer this one :)
Pallet started out by using jclouds to provision nodes, then chef-solo
to configure them. This was back before Fog had been integrated into the
chef 'knife' tool. There is still a crate to run chef-solo, though I
don't know of anyone using it.
I think there are some major differences between pallet and chef/puppet:
The first difference would be in terms of scope - pallet encompasses
node provisioning, configuration and command and control, while chef and
puppet concentrate on configuration.
Pallet also treats the links between the nodes in a first class manner,
so it is very easy to wire your nodes together.
Pallet crates tend to be a single file - in contrast chef recipes are
multiple files in multiple directories.
Pallet crates can be managed as jar artifacts - afaik, there is nothing
similar to that for chef and puppet.
Lastly, in terms of philosophy -- pallet is just a library which you can
extend and embed as you see fit. There is no server component.