I disagree. It requires to know Python, YAML, Jinja2, own set of commands. It requires careful developing of playbooks. It is slow. It is complicated for non-standard cases where you don't have ready for using modules.
Is there a better approach? I think yes. This is Pyinfra - just pure Python, no additional DSLs. Also for configuration there is Terraform (but there are also some limitations).