On Thu, 12 May 2016, Matt Garman wrote:
The only other one I have any experience with is CFEngine. I tried---and I mean really tried---to get something going with CFEngine3. I just couldn't get my head around it. The wacky DSL it uses for expressing configs just wasn't intuitive to me; the whole bootstrapping processes seemed to be overly-complex; I found the documentation managed to be lengthy yet still lack real substance.
We currently use puppet at work, but it's a situation I inherited and my colleagues are fine with it (and, truthfully, it does some things very well).
That said, I used cfengine 1 then 2 and then 3 at prior gigs. The language for cfengine 3 is "backwards" from prior versions, but it's really powerful (much more so than puppet's in many cases), esp. its built-in recursion abilities.
Bootstrapping cfengine is complex -- true. Documentation lengthy ... lack real substance -- often true.
I've found the best tutorial for cfengine's language to be the standard cfengine library (cfengine_stdlib.cf). It shows some best practices and neat tricks that the documentation really doesn't explain.