As I understand it, IAC is not about managing devices. When a IAC created device needs an update, you update the config, blow away the device, and build new.
Ansible and puppet manage devices. If you need a change, you send the package or config or reg key. You can't blow away a device and build identical, like you can with IAC. At least not easily and without lots of careful group management.
That said, IAC is changing fast and I may not be up to speed on all the features of those tools. We're an MECM and intune shop, with a bit of jamf on the side.