Fixes #5939 Allow for delegate hosts that are not in inventory
This commit is contained in:
parent
d29da4cba1
commit
4af1d6098b
1 changed files with 13 additions and 5 deletions
|
@ -303,7 +303,7 @@ class Runner(object):
|
||||||
def _compute_delegate(self, host, password, remote_inject):
|
def _compute_delegate(self, host, password, remote_inject):
|
||||||
|
|
||||||
""" Build a dictionary of all attributes for the delegate host """
|
""" Build a dictionary of all attributes for the delegate host """
|
||||||
|
|
||||||
delegate = {}
|
delegate = {}
|
||||||
|
|
||||||
# allow ansible_ssh_host to be templated
|
# allow ansible_ssh_host to be templated
|
||||||
|
@ -324,13 +324,19 @@ class Runner(object):
|
||||||
this_host = delegate['host']
|
this_host = delegate['host']
|
||||||
|
|
||||||
# get the vars for the delegate by it's name
|
# get the vars for the delegate by it's name
|
||||||
this_info = delegate['inject']['hostvars'][this_host]
|
if this_host in delegate['inject']['hostvars']:
|
||||||
|
this_info = delegate['inject']['hostvars'][this_host]
|
||||||
|
else:
|
||||||
|
# make sure the inject is empty for non-inventory hosts
|
||||||
|
this_info = {}
|
||||||
|
|
||||||
# get the real ssh_address for the delegate
|
# get the real ssh_address for the delegate
|
||||||
delegate['ssh_host'] = this_info.get('ansible_ssh_host', delegate['host'])
|
delegate['ssh_host'] = this_info.get('ansible_ssh_host', delegate['host'])
|
||||||
|
|
||||||
delegate['port'] = this_info.get('ansible_ssh_port', port)
|
delegate['port'] = this_info.get('ansible_ssh_port', port)
|
||||||
|
|
||||||
delegate['user'] = self._compute_delegate_user(this_host, delegate['inject'])
|
delegate['user'] = self._compute_delegate_user(this_host, delegate['inject'])
|
||||||
|
|
||||||
delegate['pass'] = this_info.get('ansible_ssh_pass', password)
|
delegate['pass'] = this_info.get('ansible_ssh_pass', password)
|
||||||
delegate['private_key_file'] = this_info.get('ansible_ssh_private_key_file',
|
delegate['private_key_file'] = this_info.get('ansible_ssh_private_key_file',
|
||||||
self.private_key_file)
|
self.private_key_file)
|
||||||
|
@ -355,9 +361,11 @@ class Runner(object):
|
||||||
actual_user = inject.get('ansible_ssh_user', self.remote_user)
|
actual_user = inject.get('ansible_ssh_user', self.remote_user)
|
||||||
thisuser = None
|
thisuser = None
|
||||||
|
|
||||||
if inject['hostvars'][host].get('ansible_ssh_user'):
|
if host in inject['hostvars']:
|
||||||
# user for delegate host in inventory
|
if inject['hostvars'][host].get('ansible_ssh_user'):
|
||||||
thisuser = inject['hostvars'][host].get('ansible_ssh_user')
|
# user for delegate host in inventory
|
||||||
|
thisuser = inject['hostvars'][host].get('ansible_ssh_user')
|
||||||
|
|
||||||
if thisuser is None and self.remote_user:
|
if thisuser is None and self.remote_user:
|
||||||
# user defined by play/runner
|
# user defined by play/runner
|
||||||
thisuser = self.remote_user
|
thisuser = self.remote_user
|
||||||
|
|
Loading…
Reference in a new issue