1. 10

  2. 1

    I got into chef at $dayjob, and looked at salt briefly. It seemed somewhat ‘puppet like’ due to the declarative ordering issue. I do like that chef is more sequentially ordered (prefer it over puppet), so I am thinking I would like Ansible more as well (much like the author of the article).

    Nice read.

    1. 1

      One of the more useful comparisons I’ve read.

      I’ve been using Chef to deploy a reasonably complicated system recently and have found it to be a bit of a struggle. While Chef describes itself as a orchestration tool, I’ve found that this isn’t really what it is good at.

      It seems good at solving the “I have a software stack, and I want to be able to install it without caring about the underlying OS”, but not so good at “I have a number of different virtual machines, each performing a different task and I want to get them talking to each other, scale up and down and debug when things go wrong”, which in mind is the difficult bit of orchestration.

      It appears that Chef started as a tool for bootstrapping arbitrary boxes, hence all the abstraction around packages/cron/templating etc, and then tacked on the cloud functions when the cloud started taking off.

      What we’ve found is that we had to write all the “difficult” code ourselves, while only getting a minimal benefit out of the complicated abstractions Chef provides. Which brings me onto my question: do people have any recommendations for a cloud orchestration system, that:

      • Integrates well with cloud providers
      • Has a good framework for scaling systems up and down, and reclustering nodes? E.g I have a 4 node Cassandra cluster and want to double it in size.
      • Provides the useful file templating and package setup functions that Chef has to get initial installs working, but without the abstraction bloat of roles/environments/recipes/attributes/databags etc…
      • Provides tools for monitoring/debugging this system when things go wrong