A playbook that runs fine on Ansible 1.9.5 suddenly fails on 2.0 with the following error (sensitive details hidden):
$ ansible-playbook deploy.yml -i inventory_dev.py -vvvv
Using /Users/[…]/ansible.cfg as config file
SUDO password:
Loaded callback default of type stdout, v2.0
3 plays in deploy.yml
PLAY ***************************************************************************
skipping: no hosts matched
PLAY ***************************************************************************
skipping: no hosts matched
PLAY ***************************************************************************
TASK [setup] *******************************************************************
<192.168.55.80> ESTABLISH SSH CONNECTION FOR USER: XXXX
<192.168.55.80> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o ‘ControlPath=~/.ansible/cp/ansible-ssh-%h-%p-%r’ -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=XXXX -o ConnectTimeout=10 XXX.XXX.XXX.XXX ‘/bin/sh -c ‘"’“‘sudo -i -p “[sudo via ansible, key=vcjmrsmghrskmmgswehtragyzgeuzrhl] password: " -u root /bin/sh -c '”’”’“'”‘"’“'”‘“'echo BECOME-SUCCESS-vcjmrsmghrskmmgswehtragyzgeuzrhl; /bin/sh -c '”’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“‘LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python’”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’“'”‘"’‘"’“'”‘"’“'”‘"’“‘’”‘"’’
fatal: [machinename]: FAILED! => {“changed”: false, “failed”: true, “invocation”: {“module_name”: “setup”}, “module_stderr”: “OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011\ndebug1: Reading configuration data /Users/******/.ssh/config\r\ndebug1: Reading configuration data /etc/ssh_config\r\ndebug1: /etc/ssh_config line 20: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 9949\r\ndebug3: mux_client_request_session: session request sent\r\ndebug1: mux_client_request_session: master session id: 2\r\nsudo: no tty present and no askpass program specified\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 1\r\n”, “module_stdout”: “”, “msg”: “MODULE FAILURE”, “parsed”: false}
NO MORE HOSTS LEFT *************************************************************
to retry, use: --limit @deploy.retry
PLAY RECAP *********************************************************************
machinename : ok=0 changed=0 unreachable=0 failed=1
Here’s my ansible.cfg:
[defaults]
remote_user = ******
sudo_flags = -i
vault_password_file = get_vault_pass.py
[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=30m -o ControlPath=~/.ansible/cp/ansible-ssh-%h-%p-%r
pipelining = True
[privilege_escalation]
become = True
become_ask_pass = True
If I take out “pipelining = True”, the playbook runs fine on 2.0 as well.
What changed between 1.9.5 and 2.0.1.0 that broke this? Is there something I could change to make pipelining function again?