Sorry for the late reply, only just saw this.
It's possible to freshly install ansible via the userdata script. I do template the userdata script, typically in the launch configuration for an Auto Scaling Group, based on the inventory(i.e. environment, dev, stage, prod) to be used. My userdata template looks something like this
```
ansible-playbook -i {{ build_environment }} -c local bootstrap.yml
```
No pre-built AMI, all of the environments are handled by the inventory group_vars so it's possible to implement the same roles etc. across various platforms.
You don't need to do a yum update, I'd recommend installing ansible via pip so you can get the same version across each build. You may want to specify the versions for other software too.
This leads into other issues(conventions) of how you address overall updates for your instances. Do you update instances? Or is everything immutable? i.e. you destroy the instances each time a change taken place.