Ansible doesn’t pick up group_vars without loading it manually

Question:

In my local.yml I’m able to run the playbook and reference variables within group_vars/all however I’m not able to access variables within group_vars/phl-stage. Let’s assume the following.

I have a variable, let’s call it deploy_path that’s different for each environment. I place the variable within group_vars/< environment name >. If I include the file group_vars/phl-stage within vars_files it works but I would’ve thought the group file would be automatically loaded?

site.yml

local.yml

group_vars/phl-stage

Directory structure:

Answer:

You’re confusing the structure a bit.

  • The group_vars directory contains files for each hostgroup defined in your inventory file. The files define variables that member hosts can use.
  • The inventory file doesn’t reside in the group_vars dir, it should be outside.
  • Only hosts that are members of a group can use its variables, so unless you put 127.0.0.1 in a group, it won’t be able to use any group_vars beside those defined in group_vars/all.

What you want is this dir structure:

Your hosts file should look like this, assuming 127.0.0.1 is just a staging server and not perl or web server:

So you define which hosts belong to which group in the inventory, and then for each group you define variables in its group_vars file.

Leave a Reply