

A Visual Introduction to Chef - abscondment
http://www.mynameiskate.com/blog/2011/09/09/a-visual-introduction-to-chef/

======
jsdalton
What's the current sentiment on Chef vs. Puppet these days?

~~~
gchpaco
Chef is a nice idea written by people who don't understand Unix. (evidence?
check out popen in their source, try to figure out why subprocesses
occasionally get SIGPIPE, and then grep to see where it's used and count the
file handle leaks. I've had to reimplement that six or seven times and theirs
was the one with the most subtle errors. Yes, I'll submit a patch when I have
time, which at the current rate the day job is pushing me will happen shortly
before hell freezes over) I like the design but the implementation scares me.

Puppet is the more mature technology of the two, but (so I'm told) there's an
important limitation in that there is no way to automatically e.g. reload the
web server if its config file changes. Both these systems have some issues
with information flowing in only one direction.

~~~
omarqureshi
For puppet, so long as the service that you have has a stop and start setting
(i've not come across one that doesn't) and you've told the service to
subscribe to a file for changes - then it should automatically do a stop+start
at the very least.

------
vegardx
Superb! I've recently started with Chef and the learning curve is very high,
especially if you're like me and haven't touched Ruby before.

~~~
mattdeboard
Ditto, but I switched to learning Puppet tonight and I find it much easier to
pick up.

~~~
mkent
Puppet is definitely easier to start with but any ruby you pickup in learning
Chef is useful in more general sense, while time spent on the puppet dsl is
only good for using puppet.

------
patrickgzill
What is the difference between capistrano, Chef, and Puppet?

~~~
abscondment
High level:

Capistrano is a tool for deploying your _applications_. You use it to push out
new versions of your own codebase.

Chef and Puppet are tools for provisioning/configuring _servers_. You use it
to install the right third-party libraries, programs, config files, etc.

~~~
patrickgzill
I will have to look at it more. I have found "using capistrano for system
administration" articles however.

~~~
bradleyland
This is because the tasks involved with deploying applications and system
administration have some significant overlaps. Capistrano is, essentially, a
tool layer atop Net::SSH that can execute actions on a server, based on
definitions written inside the framework provided by Capistrano. Capistrano
was originally written for application deployment, but it wouldn't be "wrong"
to use it for system administration. Sprinkle (a software provisioning tool)
[1] is built on top of Capistrano.

1 - <https://github.com/crafterm/sprinkle>

------
peterwwillis
I would like to read this, but unfortunately there's a database involved in
serving the pages. Remember, kids: text and images were served happily on the
'net long before MySQL existed.

~~~
fdb
You can just take a look at the diagram, which is hosted at Gliffy:
<http://www.gliffy.com/publish/2886461/>

