summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2016-11-18 22:56:37 -0600
committerJames Cammarata <jimi@sngx.net>2016-11-18 22:56:37 -0600
commit23b5764b5787bd3a330def74e799f275962ca6ae (patch)
tree18d49168f553640b5adad9ffa3145c77b3611b21
parent3ce19f4c58cfb4d0e116904a081d77d27dd07778 (diff)
downloadansible-23b5764b5787bd3a330def74e799f275962ca6ae.tar.gz
Properly sort groups by name as well as depth when getting vars
Fixes #17243
-rw-r--r--lib/ansible/inventory/host.py2
-rw-r--r--lib/ansible/vars/__init__.py2
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/ansible/inventory/host.py b/lib/ansible/inventory/host.py
index 268eef2f46..a48fbce6ff 100644
--- a/lib/ansible/inventory/host.py
+++ b/lib/ansible/inventory/host.py
@@ -138,6 +138,6 @@ class Host:
def get_group_vars(self):
results = {}
groups = self.get_groups()
- for group in sorted(groups, key=lambda g: g.depth):
+ for group in sorted(groups, key=lambda g: (g.depth, g.name)):
results = combine_vars(results, group.get_vars())
return results
diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py
index 7a58454555..eba7916ebb 100644
--- a/lib/ansible/vars/__init__.py
+++ b/lib/ansible/vars/__init__.py
@@ -252,7 +252,7 @@ class VariableManager:
# we merge in vars from groups specified in the inventory (INI or script)
all_vars = combine_vars(all_vars, host.get_group_vars())
- for group in sorted(host.get_groups(), key=lambda g: g.depth):
+ for group in sorted(host.get_groups(), key=lambda g: (g.depth, g.name)):
if group.name in self._group_vars_files and group.name != 'all':
for data in self._group_vars_files[group.name]:
data = preprocess_vars(data)