Default SSH command timeout

Hello,

Maybe it's a good idea to increase the command timeout for SSH
connections. A first yum action can take quite some time since it's
loading all the metadata. I hit the socket timeout of 10 seconds
there:

fatal: [rh6oranode2] => Traceback (most recent call last):
  File "/home/jeroen/dev/ansible/work/lib/ansible/runner.py", line
572, in _executor
    (host, ok, data, err) = self._executor_internal(host)
  File "/home/jeroen/dev/ansible/work/lib/ansible/runner.py", line
611, in _executor_internal
    result = self._execute_normal_module(conn, host, tmp, module_name)
  File "/home/jeroen/dev/ansible/work/lib/ansible/runner.py", line
352, in _execute_normal_module
    (result, err, executed) = self._execute_module(conn, tmp, module,
self.module_args)
  File "/home/jeroen/dev/ansible/work/lib/ansible/runner.py", line
299, in _execute_module
    res, err = self._exec_command(conn, cmd, tmp, sudoable=True)
  File "/home/jeroen/dev/ansible/work/lib/ansible/runner.py", line
644, in _exec_command
    err="\n".join(stderr.readlines())
  File "/home/jeroen/dev/ansible/lib/python2.7/site-packages/paramiko/file.py",
line 259, in readlines
    line = self.readline()
  File "/home/jeroen/dev/ansible/lib/python2.7/site-packages/paramiko/file.py",
line 214, in readline
    new_data = self._read(n)
  File "/home/jeroen/dev/ansible/lib/python2.7/site-packages/paramiko/channel.py",
line 1227, in _read
    return self.channel.recv_stderr(size)
  File "/home/jeroen/dev/ansible/lib/python2.7/site-packages/paramiko/channel.py",
line 636, in recv_stderr
    raise socket.timeout()
timeout

Connection.py reuses the runner timeout as documented there:

# reusing runner's TCP connect timeout as command progress timeout (correct?)

Runner timeout is 10 seconds. I believe we don't want to couple these
values. Any suggestions as to what a correct value should be?

A workaround for now is running the task as async...

Greetings,

Jeroen

Maybe we should not reuse the runner SSH timeout value for sudo ops, because they mean quite different things?

I’d like to avoid an extra flag though.

A large enough value, perhaps?