I encountered this recently. I solved it with group_vars and a simple trick in my hosts file:
#hostsfile
localhost ansible_python_interpreter="/usr/bin/env python" ansible_connection=local
[fancyapp-blue]
localhost
[fancyapp-violet]
localhost
##end hostsfile
Then, in my groupvars/fancyapp-blue and groupvars/fancyapp-violet, I override the role defaults.
I make calls to specific "environments" like
- hosts: fancyapp-blue
gather_facts: no
roles:
- asg
In this case, the group vars for fancyapp-blue will override the role defaults for asg. You could also do some neat things like applying the same role against groups of hosts, if you wanted to create things in parallel.