I think you are going to have to change, or at least add something to do this.
I would do this by adding a temporary inventory file and group vars.
If you have inventory with groups like
[webservers]
host1 app_folder=/opt/instance1
[database]
host1 app_folder=/opt/instance2
then you can have a playbook that does something like the following:
hosts: webservers:
roles:
- install_app
hosts: database
roles:
- install_app
if install_app uses app_folder
as the installation dir for app then you can get 2
Don't forget you can set defaults in your role so that you only have to provide an override for the hosts that need it.
I have an inventory file which has all the same group names as my test and production inventories, but only 1 actual host, which points at a virtual machine which I can revert back to a 'blank' snapshot. I use this a lot for developing my provisioning playbooks.
Hope this helps,
Jon