From 81cfbbbeb9783c12a463a091cd86b5526a1927fe Mon Sep 17 00:00:00 2001 From: Ludek Finstrle Date: Thu, 15 Mar 2018 12:18:47 +0100 Subject: [PATCH] constructed inventory does not use group variables from previous inventory #37397 * Add support for loading invenotry group variables in constructed plugin --- lib/ansible/plugins/inventory/constructed.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/ansible/plugins/inventory/constructed.py b/lib/ansible/plugins/inventory/constructed.py index a6ace76c7e..d99d58480a 100644 --- a/lib/ansible/plugins/inventory/constructed.py +++ b/lib/ansible/plugins/inventory/constructed.py @@ -56,6 +56,7 @@ import os from ansible import constants as C from ansible.errors import AnsibleParserError +from ansible.inventory.helpers import get_group_vars from ansible.plugins.cache import FactCache from ansible.plugins.inventory import BaseInventoryPlugin, Constructable from ansible.module_utils._text import to_native @@ -98,7 +99,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable): for host in inventory.hosts: # get available variables to templar - hostvars = inventory.hosts[host].get_vars() + hostvars = combine_vars(get_group_vars(inventory.hosts[host].get_groups()), inventory.hosts[host].get_vars()) if host in fact_cache: # adds facts if cache is active hostvars = combine_vars(hostvars, fact_cache[host]) @@ -106,7 +107,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable): self._set_composite_vars(self.get_option('compose'), hostvars, host, strict=strict) # refetch host vars in case new ones have been created above - hostvars = inventory.hosts[host].get_vars() + hostvars = combine_vars(get_group_vars(inventory.hosts[host].get_groups()), inventory.hosts[host].get_vars()) if host in self._cache: # adds facts if cache is active hostvars = combine_vars(hostvars, self._cache[host])