mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Use delegated_to field for play context remote_addr, if none other exists
Fixes #12527
This commit is contained in:
parent
40bdf09998
commit
3bd71d0619
2 changed files with 18 additions and 0 deletions
|
@ -39,6 +39,13 @@ from ansible.utils.unicode import to_unicode
|
||||||
|
|
||||||
__all__ = ['PlayContext']
|
__all__ = ['PlayContext']
|
||||||
|
|
||||||
|
try:
|
||||||
|
from __main__ import display
|
||||||
|
display = display
|
||||||
|
except ImportError:
|
||||||
|
from ansible.utils.display import Display
|
||||||
|
display = Display()
|
||||||
|
|
||||||
# the magic variable mapping dictionary below is used to translate
|
# the magic variable mapping dictionary below is used to translate
|
||||||
# host/inventory variables to fields in the PlayContext
|
# host/inventory variables to fields in the PlayContext
|
||||||
# object. The dictionary values are tuples, to account for aliases
|
# object. The dictionary values are tuples, to account for aliases
|
||||||
|
@ -296,6 +303,16 @@ class PlayContext(Base):
|
||||||
# the host name in the delegated variable dictionary here
|
# the host name in the delegated variable dictionary here
|
||||||
delegated_host_name = templar.template(task.delegate_to)
|
delegated_host_name = templar.template(task.delegate_to)
|
||||||
delegated_vars = variables.get('ansible_delegated_vars', dict()).get(delegated_host_name, dict())
|
delegated_vars = variables.get('ansible_delegated_vars', dict()).get(delegated_host_name, dict())
|
||||||
|
# make sure this delegated_to host has something set for its remote
|
||||||
|
# address, otherwise we default to connecting to it by name. This
|
||||||
|
# may happen when users put an IP entry into their inventory, or if
|
||||||
|
# they rely on DNS for a non-inventory hostname
|
||||||
|
for address_var in MAGIC_VARIABLE_MAPPING.get('remote_addr'):
|
||||||
|
if address_var in delegated_vars:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
display.warning("no remote address found for delegated host %s, using its name by default" % delegated_host_name)
|
||||||
|
delegated_vars['ansible_host'] = delegated_host_name
|
||||||
else:
|
else:
|
||||||
delegated_vars = dict()
|
delegated_vars = dict()
|
||||||
|
|
||||||
|
|
|
@ -407,6 +407,7 @@ class VariableManager:
|
||||||
include_delegate_to=False,
|
include_delegate_to=False,
|
||||||
include_hostvars=False,
|
include_hostvars=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
all_vars['ansible_delegated_vars'] = delegated_host_vars
|
all_vars['ansible_delegated_vars'] = delegated_host_vars
|
||||||
|
|
||||||
if self._inventory is not None:
|
if self._inventory is not None:
|
||||||
|
|
Loading…
Reference in a new issue