All resources in Ansible are declarative models of state, that get informed, and have idempotent properties.
So it's just like any CMS.
However if you want to write a deployment script, it also lets you, rather than fighting it kicking and screaming :)
Also, when you want to just push and run a script versus using one of the 234 other modules, it's there - http://docs.ansible.com/script_module.html