Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chef and Puppet recommendations [closed]

I'd like to ask about when and in what circumstances you'd use puppet and when you'd use chef. I've also found rump which is a puppet-solo type of thing where you iterate a single server to its configuration and then push that to a series of servers, allowing you to see changes directly.

My question: which of the above should I use and in what ways? Could someone help me?

My aim is in the context of continuous integration, continuous deployment in a mono/.Net environment with rake and git. I would like to package, version and deploy web applications easily and would like to use recepies for a load balancer for multiple web servers. Being able to take these down quickly and not have any downtime in between upgrades.

like image 367
Henrik Avatar asked Jun 19 '11 17:06

Henrik


People also ask

Why Ansible is better than Chef and Puppet?

3) Setup and Installation When it comes to ease of setup and installation, Ansible dominates the other two tools, Chef and Puppet, as it has an 'agentless' architecture. Chef and Puppet follow master-agent or master-slave architecture.

Is Chef and Puppet the same?

The chef has you working with cookbooks and recipes, while Puppet works with manifests and modules. Recipes and manifests, as a rule, describe single concepts, while cookbooks and recipes describe more general concepts.

Is Chef better than Puppet?

To use an analogy, using Puppet is like writing configuration files whereas using Chef is like programming the control of your nodes. If you or your team have more experience with system administration, you may prefer Puppet. On the other hand, if most of you are developers, Chef might be a better fit.

Which is better Ansible or Puppet?

Many use Ansible for small, fast and/or temporary deployments, whereas Puppet is often used for more complex or longer-term deployments. If you have a mostly fixed set of machines to maintain, Puppet might be the better option, whereas if your machines are often being reprovisioned, Ansible might be the way to go.


2 Answers

Having used both, I would say that it depends on what you look for. In my opinion:

  • Chef is more developer-oriented. If you're a Ruby guru, you'll love it.

  • Puppet is more sysadmin-oriented. It has a non-ruby DSL so it's more difficult to propagate mistakes to your machines (imho).

Puppet creates more readable and stable code but it's also slow to deploy new features. That's probably what you'll want in a big enterprise structure which strongly believes in your DevOps work.

With Chef you can achieve complex tasks with less code, time effort. You can use all the ruby magic without having to create a Puppet construct. This is good, for instance, when your Company doesn't truly believes in DevOps value and you're constantly struggling against time to prove your manager wrong :-) I personally find Puppet a bit slower to execute when you develop new features, which can be a bit of a pain.

My suggestion is: if you're a sysadmin with some development skills, go for Puppet. If you're good with Ruby (or Python), go for Chef.

I also tried rump and I'm playing with it. It helps, it's cool, but I still don't see a huge value except lazy typing of rump go instead of puppet apply -vd --modulepath=. module/manifests/init.pp. :)

like image 185
Riccardo Avatar answered Oct 18 '22 22:10

Riccardo


I'd use Puppet but I'm kinda biased as I wrote a book about it and work there. :) In addition to Rump you can also use Puppet in its apply mode - which is the same as chef-solo. Although Rump wraps some goodness around the process that's worth trying out.

I'd give Puppet a shot here using Rump as a wrap around - you can both use the Puppet DSL OR Ruby DSL (Chef only has a Ruby DSL). It's very easy to create "environments" using Puppet and to integrate a git/CI workflow with your deployments. It's also easy to integrate with Rake tasks or the like.

like image 15
James Turnbull Avatar answered Oct 18 '22 23:10

James Turnbull