From ca96d74572ee2ea2f296e3adf01fc1bf8a52aafb Mon Sep 17 00:00:00 2001 From: nextus Date: Wed, 25 Sep 2013 16:15:49 +0400 Subject: [PATCH] #4227 in upstream repo --- examples/ansible.cfg | 5 ++++- lib/ansible/constants.py | 1 + lib/ansible/runner/connection_plugins/paramiko_ssh.py | 11 ++++++----- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/examples/ansible.cfg b/examples/ansible.cfg index 57e721a77be..a8f9a1da828 100644 --- a/examples/ansible.cfg +++ b/examples/ansible.cfg @@ -98,9 +98,12 @@ filter_plugins = /usr/share/ansible_plugins/filter_plugins # uncomment this line to cause the paramiko connection plugin to not record new host # keys encountered. Increases performance on new host additions. Setting works independently of the # host key checking setting above. - #record_host_keys=False +# by default, Ansible request a pseudo-terminal for commands execuded under sudo. Uncomment this +# line for override this behaviour. +#pty=False + [ssh_connection] # ssh arguments to use diff --git a/lib/ansible/constants.py b/lib/ansible/constants.py index dadc87133ff..9dbd22932e4 100644 --- a/lib/ansible/constants.py +++ b/lib/ansible/constants.py @@ -133,6 +133,7 @@ ANSIBLE_NOCOWS = get_config(p, DEFAULTS, 'nocows', 'ANSIBLE_NOCO ANSIBLE_SSH_ARGS = get_config(p, 'ssh_connection', 'ssh_args', 'ANSIBLE_SSH_ARGS', None) ANSIBLE_SSH_CONTROL_PATH = get_config(p, 'ssh_connection', 'control_path', 'ANSIBLE_SSH_CONTROL_PATH', "%(directory)s/ansible-ssh-%%h-%%p-%%r") PARAMIKO_RECORD_HOST_KEYS = get_config(p, 'paramiko_connection', 'record_host_keys', 'ANSIBLE_PARAMIKO_RECORD_HOST_KEYS', True, boolean=True) +PARAMIKO_PTY = get_config(p, 'paramiko_connection', 'pty', 'ANSIBLE_PARAMIKO_PTY', True, boolean=True) ZEROMQ_PORT = int(get_config(p, 'fireball_connection', 'zeromq_port', 'ANSIBLE_ZEROMQ_PORT', 5099)) ACCELERATE_PORT = int(get_config(p, 'accelerate', 'accelerate_port', 'ACCELERATE_PORT', 5099)) diff --git a/lib/ansible/runner/connection_plugins/paramiko_ssh.py b/lib/ansible/runner/connection_plugins/paramiko_ssh.py index 6c57e2a9d0b..ab0d3d2f5e6 100644 --- a/lib/ansible/runner/connection_plugins/paramiko_ssh.py +++ b/lib/ansible/runner/connection_plugins/paramiko_ssh.py @@ -196,11 +196,12 @@ class Connection(object): chan.exec_command(quoted_command) else: # sudo usually requires a PTY (cf. requiretty option), therefore - # we give it one, and we try to initialise from the calling - # environment - chan.get_pty(term=os.getenv('TERM', 'vt100'), - width=int(os.getenv('COLUMNS', 0)), - height=int(os.getenv('LINES', 0))) + # we give it one by default (pty=True in ansble.cfg), and we try + # to initialise from the calling environment + if C.PARAMIKO_PTY: + chan.get_pty(term=os.getenv('TERM', 'vt100'), + width=int(os.getenv('COLUMNS', 0)), + height=int(os.getenv('LINES', 0))) shcmd, prompt = utils.make_sudo_cmd(sudo_user, executable, cmd) vvv("EXEC %s" % shcmd, host=self.host) sudo_output = ''