mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-11 19:04:02 -07:00
Config continued (#31024)
* included inventory and callback in new config allow inventory to be configurable updated connection options settings also updated winrm to work with new configs removed now obsolete set_host_overrides added notes for future bcoca, current one is just punting, it's future's problem updated docs per feedback added remove group/host methods to inv data moved fact cache from data to constructed cleaner/better options fix when vars are added extended ignore list to config dicts updated paramiko connection docs removed options from base that paramiko already handles left the look option as it is used by other plugin types resolve delegation updated cache doc options fixed test_script better fragment merge for options fixed proxy command restore ini for proxy normalized options moved pipelining to class updates for host_key_checking restructured mixins * fix typo
This commit is contained in:
parent
46c4f6311a
commit
23b1dbacaf
32 changed files with 667 additions and 366 deletions
|
@ -54,17 +54,15 @@ EXAMPLES = '''
|
|||
|
||||
import os
|
||||
|
||||
from collections import MutableMapping
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.errors import AnsibleParserError
|
||||
from ansible.plugins.cache import FactCache
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.utils.vars import combine_vars
|
||||
|
||||
|
||||
class InventoryModule(BaseInventoryPlugin):
|
||||
class InventoryModule(BaseInventoryPlugin, Constructable):
|
||||
""" constructs groups and vars using Jinaj2 template expressions """
|
||||
|
||||
NAME = 'constructed'
|
||||
|
@ -91,30 +89,21 @@ class InventoryModule(BaseInventoryPlugin):
|
|||
|
||||
super(InventoryModule, self).parse(inventory, loader, path, cache=cache)
|
||||
|
||||
try:
|
||||
data = self.loader.load_from_file(path)
|
||||
except Exception as e:
|
||||
raise AnsibleParserError("Unable to parse %s: %s" % (to_native(path), to_native(e)))
|
||||
self._read_config_data(path)
|
||||
|
||||
if not data:
|
||||
raise AnsibleParserError("%s is empty" % (to_native(path)))
|
||||
elif not isinstance(data, MutableMapping):
|
||||
raise AnsibleParserError('inventory source has invalid structure, it should be a dictionary, got: %s' % type(data))
|
||||
elif data.get('plugin') != self.NAME:
|
||||
raise AnsibleParserError("%s is not a constructed groups config file, plugin entry must be 'constructed'" % (to_native(path)))
|
||||
|
||||
strict = data.get('strict', False)
|
||||
strict = self._options['strict']
|
||||
fact_cache = FactCache()
|
||||
try:
|
||||
# Go over hosts (less var copies)
|
||||
for host in inventory.hosts:
|
||||
|
||||
# get available variables to templar
|
||||
hostvars = inventory.hosts[host].get_vars()
|
||||
if host in self._cache: # adds facts if cache is active
|
||||
hostvars = combine_vars(hostvars, self._cache[host])
|
||||
if host in fact_cache: # adds facts if cache is active
|
||||
hostvars = combine_vars(hostvars, fact_cache[host])
|
||||
|
||||
# create composite vars
|
||||
self._set_composite_vars(data.get('compose'), hostvars, host, strict=strict)
|
||||
self._set_composite_vars(self._options['compose'], hostvars, host, strict=strict)
|
||||
|
||||
# refetch host vars in case new ones have been created above
|
||||
hostvars = inventory.hosts[host].get_vars()
|
||||
|
@ -122,10 +111,10 @@ class InventoryModule(BaseInventoryPlugin):
|
|||
hostvars = combine_vars(hostvars, self._cache[host])
|
||||
|
||||
# constructed groups based on conditionals
|
||||
self._add_host_to_composed_groups(data.get('groups'), hostvars, host, strict=strict)
|
||||
self._add_host_to_composed_groups(self._options['groups'], hostvars, host, strict=strict)
|
||||
|
||||
# constructed groups based variable values
|
||||
self._add_host_to_keyed_groups(data.get('keyed_groups'), hostvars, host, strict=strict)
|
||||
self._add_host_to_keyed_groups(self._options['keyed_groups'], hostvars, host, strict=strict)
|
||||
|
||||
except Exception as e:
|
||||
raise AnsibleParserError("failed to parse %s: %s " % (to_native(path), to_native(e)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue