Chef Server has a central server. Chef Zero doesn't, especially when using tools like cfn-init/cfn-hup and S3-backed minimart to self-bootstrap. This is the approach I take, and it's the approach I see becoming more and more common. Letting nodes figure out how to deal with their own problems (better able to auto-scale, more fault tolerant) is, to me, much better than having Jenkins or whatever have to SSH into them in the first place.
You can do it with Ansible, if you're going home-roll it, but I haven't seen too many people do so.
You can do it with Ansible, if you're going home-roll it, but I haven't seen too many people do so.