diff --git a/changelogs/fragments/fix_scp_ssh_settings.yml b/changelogs/fragments/fix_scp_ssh_settings.yml new file mode 100644 index 00000000000..d61acbfdd30 --- /dev/null +++ b/changelogs/fragments/fix_scp_ssh_settings.yml @@ -0,0 +1,2 @@ +bugfixes: + - ssh connection - fix interaction between transfer settings options. diff --git a/lib/ansible/plugins/connection/ssh.py b/lib/ansible/plugins/connection/ssh.py index 02d776e14b7..36cec80b035 100644 --- a/lib/ansible/plugins/connection/ssh.py +++ b/lib/ansible/plugins/connection/ssh.py @@ -271,7 +271,6 @@ DOCUMENTATION = ''' - name: ansible_sftp_batch_mode version_added: '2.7' ssh_transfer_method: - default: smart description: - "Preferred method to use when transferring files over ssh" - Setting to 'smart' (default) will try them in order, until one succeeds or they all fail @@ -1145,6 +1144,10 @@ class Connection(ConnectionBase): # Use the transfer_method option if set, otherwise use scp_if_ssh ssh_transfer_method = self.get_option('ssh_transfer_method') + scp_if_ssh = self.get_option('scp_if_ssh') + if ssh_transfer_method is None and scp_if_ssh == 'smart': + ssh_transfer_method = 'smart' + if ssh_transfer_method is not None: if ssh_transfer_method == 'smart': methods = smart_methods @@ -1152,7 +1155,6 @@ class Connection(ConnectionBase): methods = [ssh_transfer_method] else: # since this can be a non-bool now, we need to handle it correctly - scp_if_ssh = self.get_option('scp_if_ssh') if not isinstance(scp_if_ssh, bool): scp_if_ssh = scp_if_ssh.lower() if scp_if_ssh in BOOLEANS: