mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #12471 from amenonsen/pipelining
Make pipelining a connection variable
This commit is contained in:
commit
05af4c8e91
3 changed files with 9 additions and 4 deletions
|
@ -217,6 +217,9 @@ SSH connection::
|
||||||
ansible_ssh_extra_args
|
ansible_ssh_extra_args
|
||||||
Additional arguments for ssh. Useful to configure a ``ProxyCommand`` for a certain host (or group).
|
Additional arguments for ssh. Useful to configure a ``ProxyCommand`` for a certain host (or group).
|
||||||
This is used in addition to any ``ssh_args`` configured in ``ansible.cfg`` or the inventory.
|
This is used in addition to any ``ssh_args`` configured in ``ansible.cfg`` or the inventory.
|
||||||
|
ansible_ssh_pipelining
|
||||||
|
Determines whether or not to use SSH pipelining. This can override the
|
||||||
|
``pipelining`` setting in ``ansible.cfg``.
|
||||||
|
|
||||||
Privilege escalation (see :doc:`Ansible Privilege Escalation<become>` for further details)::
|
Privilege escalation (see :doc:`Ansible Privilege Escalation<become>` for further details)::
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ MAGIC_VARIABLE_MAPPING = dict(
|
||||||
port = ('ansible_ssh_port', 'ansible_port'),
|
port = ('ansible_ssh_port', 'ansible_port'),
|
||||||
password = ('ansible_ssh_pass', 'ansible_password'),
|
password = ('ansible_ssh_pass', 'ansible_password'),
|
||||||
private_key_file = ('ansible_ssh_private_key_file', 'ansible_private_key_file'),
|
private_key_file = ('ansible_ssh_private_key_file', 'ansible_private_key_file'),
|
||||||
|
pipelining = ('ansible_ssh_pipelining', 'ansible_pipelining'),
|
||||||
shell = ('ansible_shell_type',),
|
shell = ('ansible_shell_type',),
|
||||||
become = ('ansible_become',),
|
become = ('ansible_become',),
|
||||||
become_method = ('ansible_become_method',),
|
become_method = ('ansible_become_method',),
|
||||||
|
@ -133,6 +134,7 @@ class PlayContext(Base):
|
||||||
_shell = FieldAttribute(isa='string')
|
_shell = FieldAttribute(isa='string')
|
||||||
_ssh_extra_args = FieldAttribute(isa='string')
|
_ssh_extra_args = FieldAttribute(isa='string')
|
||||||
_connection_lockfd= FieldAttribute(isa='int')
|
_connection_lockfd= FieldAttribute(isa='int')
|
||||||
|
_pipelining = FieldAttribute(isa='bool', default=C.ANSIBLE_SSH_PIPELINING)
|
||||||
|
|
||||||
# privilege escalation fields
|
# privilege escalation fields
|
||||||
_become = FieldAttribute(isa='bool')
|
_become = FieldAttribute(isa='bool')
|
||||||
|
@ -427,7 +429,7 @@ class PlayContext(Base):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
#FIXME: remove password? possibly add become/sudo settings
|
#FIXME: remove password? possibly add become/sudo settings
|
||||||
for special_var in ['ansible_connection', 'ansible_ssh_host', 'ansible_ssh_pass', 'ansible_ssh_port', 'ansible_ssh_user', 'ansible_ssh_private_key_file']:
|
for special_var in ['ansible_connection', 'ansible_ssh_host', 'ansible_ssh_pass', 'ansible_ssh_port', 'ansible_ssh_user', 'ansible_ssh_private_key_file', 'ansible_ssh_pipelining']:
|
||||||
if special_var not in variables:
|
if special_var not in variables:
|
||||||
for prop, varnames in MAGIC_VARIABLE_MAPPING.items():
|
for prop, varnames in MAGIC_VARIABLE_MAPPING.items():
|
||||||
if special_var in varnames:
|
if special_var in varnames:
|
||||||
|
|
|
@ -149,7 +149,7 @@ class ActionBase:
|
||||||
if tmp and "tmp" in tmp:
|
if tmp and "tmp" in tmp:
|
||||||
# tmp has already been created
|
# tmp has already been created
|
||||||
return False
|
return False
|
||||||
if not self._connection.has_pipelining or not C.ANSIBLE_SSH_PIPELINING or C.DEFAULT_KEEP_REMOTE_FILES or self._play_context.become_method == 'su':
|
if not self._connection.has_pipelining or not self._play_context.pipelining or C.DEFAULT_KEEP_REMOTE_FILES or self._play_context.become_method == 'su':
|
||||||
# tmp is necessary to store the module source code
|
# tmp is necessary to store the module source code
|
||||||
# or we want to keep the files on the target system
|
# or we want to keep the files on the target system
|
||||||
return True
|
return True
|
||||||
|
@ -367,7 +367,7 @@ class ActionBase:
|
||||||
remote_module_path = self._connection._shell.join_path(tmp, module_name)
|
remote_module_path = self._connection._shell.join_path(tmp, module_name)
|
||||||
|
|
||||||
# FIXME: async stuff here?
|
# FIXME: async stuff here?
|
||||||
#if (module_style != 'new' or async_jid is not None or not self._connection._has_pipelining or not C.ANSIBLE_SSH_PIPELINING or C.DEFAULT_KEEP_REMOTE_FILES):
|
#if (module_style != 'new' or async_jid is not None or not self._connection._has_pipelining or not self._play_context.pipelining or C.DEFAULT_KEEP_REMOTE_FILES):
|
||||||
if remote_module_path:
|
if remote_module_path:
|
||||||
self._display.debug("transferring module to remote")
|
self._display.debug("transferring module to remote")
|
||||||
self._transfer_data(remote_module_path, module_data)
|
self._transfer_data(remote_module_path, module_data)
|
||||||
|
@ -385,7 +385,7 @@ class ActionBase:
|
||||||
# FIXME: all of the old-module style and async stuff has been removed from here, and
|
# FIXME: all of the old-module style and async stuff has been removed from here, and
|
||||||
# might need to be re-added (unless we decide to drop support for old-style modules
|
# might need to be re-added (unless we decide to drop support for old-style modules
|
||||||
# at this point and rework things to support non-python modules specifically)
|
# at this point and rework things to support non-python modules specifically)
|
||||||
if self._connection.has_pipelining and C.ANSIBLE_SSH_PIPELINING and not C.DEFAULT_KEEP_REMOTE_FILES:
|
if self._connection.has_pipelining and self._play_context.pipelining and not C.DEFAULT_KEEP_REMOTE_FILES:
|
||||||
in_data = module_data
|
in_data = module_data
|
||||||
else:
|
else:
|
||||||
if remote_module_path:
|
if remote_module_path:
|
||||||
|
|
Loading…
Reference in a new issue