You can set up Ansible to automatically refresh repository and run scripts locally. That's only a small bit of what chef/puppet offer. And sure, there are add-ons to cover other bits one by one. But that's different from the system offering centralised inventory and automated pull of code/data on its own - otherwise you could just as well say "you can set up bash to do pull if you really want to and there are other solutions for ...". But it's just not the same.