How to handle variables

Looking for some help on a variable scenario

We have a lot of variables defined in the group_vars/all file which set the default variable that is used across multiple roles/playbook

For each environment, we have an ini inventory file. We would like to use the ini file as the place to override variable that might be different from default.

There is the feature for ansible to have env specific variable but you would need two file. Ideally we would like to keep everything in the same inventory file.

We have a section in the ini file called “[all:vars]” but it seems like the value in the group_vars/all override the one in the ini file which isn’t ideal.

Anyone have any suggestion on how I could make this happen? Was thinking of using lookup but there doesn’t seem to be a way to load it from the inventory file for variables.

I do this by having a per-environment inventory, each of which has its
own group_vars/all.
e.g.

production/hosts
production/group_vars/all
staging/hosts
staging/group_vars/all
dev/hosts
dev/group_vars/all

and so on. Then invoke the same play against each environment like :

ansible-playbook -i production/ site.yml

If you want you could have a file per environment with an [all:vars]
section laid out like this:

production_hosts
staging_hosts
dev_hosts

called with

ansible-playbook -i production_hosts site.yml

and do away with your group_vars/all altogether.