In order to use specific values for different environments all you need to do is move your variables from the role itself to a variables file for that specific enrivonment e.g.
production
|- group_vars
|- servers
|- inventory
staging
|- group_vars
|- servers
|- inventory
development
|- group_vars
|- servers
|- inventory
roles
|- esb
|- tasks
|- main.yml
|- templates
|- trp.properties.j2
etc.
Inside each of the environments' group_vars/servers
you could specify variable specific for that environment, e.g.
$ cat production/group_vars/servers
---
jndiProviderUrl: 'jnp://mqendpoint.company.com:1099'
trp_endpoint_estask: 'http://tmfendpoint.company.com:8080/tmf/estask'
trp_endpoint_builderQ: 'jnp://mqendpoint.company.com:1099'
$ cat staging/group_vars/servers
---
jndiProviderUrl: 'jnp://staging.mqendpoint.company.com:1099'
trp_endpoint_estask: 'http://staging.tmfendpoint.company.com:8080/tmf/estask'
trp_endpoint_builderQ: 'jnp://staging.mqendpoint.company.com:1099'
$ cat development/group_vars/servers
---
jndiProviderUrl: 'jnp://dev.mqendpoint.company.com:1099'
trp_endpoint_estask: 'http://dev.tmfendpoint.company.com:8080/tmf/estask'
trp_endpoint_builderQ: 'jnp://dev.mqendpoint.company.com:1099'
The Jinja2 template can then remain the same (it doesn't care where the variables come from after all).
You would then execute:
# Provision production
$ ansible-playbook $playbook -i production/inventory
# Provision staging
$ ansible-playbook $playbook -i staging/inventory
# Provision development
$ ansible-playbook $playbook -i development/inventory