I switched from chef to ansible because in my opinion a DSL is the wrong way to go for this stuff. Granted I've only ever managed fairly small deployments. But so much more can go wrong when you are writing code vs writing yaml. If your yaml parses it will probably work. I write ruby application code everyday and I love ruby. But I hated writing chef scripts. I also ended up with many fewer lines of yaml than ruby.