I tried all the options above with ansible 2.4.1.0, and no one works, for two more, and here are the details to reproduce the case.
$ cat ~/.bash_aliases alias ta="echo 'this is test for ansible interactive shell'";
And this is a response test:
- name: Check the basic string operations hosts: 127.0.0.1 connection: local tasks: - name: Test Interactive Bash Failure shell: ta ignore_errors: True - name: Test Interactive Bash Using Source shell: source ~/.bash_aliases && ta args: executable: /bin/bash ignore_errors: yes - name: Test Interactive Bash Using . shell: . ~/.bash_aliases && ta ignore_errors: yes - name: Test Interactive Bash Using /bin/bash -ci shell: /bin/bash -ic 'ta' register: result ignore_errors: yes - debug: msg="{{ result }}" - name: Test Interactive Bash Using sudo -ui shell: sudo -ui hearen ta register: result ignore_errors: yes - name: Test Interactive Bash Using ssh -tt localhost /bin/bash -ci shell: ssh -tt localhost /bin/bash -ci 'ta' register: result ignore_errors: yes
And here is the result:
$ ansible-playbook testInteractiveBash.yml [WARNING]: Could not match supplied host pattern, ignoring: all [WARNING]: provided hosts list is empty, only localhost is available PLAY [Check the basic string operations] ************************************************************************************************************************************************ TASK [Gathering Facts] ****************************************************************************************************************************************************************** ok: [127.0.0.1] TASK [Test Interactive Bash Failure] **************************************************************************************************************************************************** fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "ta", "delta": "0:00:00.001341", "end": "2018-10-31 10:11:39.485897", "failed": true, "msg": "non-zero return code", "rc": 127, "start": "2018-10-31 10:11:39.484556", "stderr": "/bin/sh: 1: ta: not found", "stderr_lines": ["/bin/sh: 1: ta: not found"], "stdout": "", "stdout_lines": []} ...ignoring TASK [Test Interactive Bash Using Source] *********************************************************************************************************************************************** fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "source ~/.bash_aliases && ta", "delta": "0:00:00.002769", "end": "2018-10-31 10:11:39.588352", "failed": true, "msg": "non-zero return code", "rc": 127, "start": "2018-10-31 10:11:39.585583", "stderr": "/bin/bash: ta: command not found", "stderr_lines": ["/bin/bash: ta: command not found"], "stdout": "", "stdout_lines": []} ...ignoring TASK [Test Interactive Bash Using .] **************************************************************************************************************************************************** fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": ". ~/.bash_aliases && ta", "delta": "0:00:00.001425", "end": "2018-10-31 10:11:39.682609", "failed": true, "msg": "non-zero return code", "rc": 127, "start": "2018-10-31 10:11:39.681184", "stderr": "/bin/sh: 1: ta: not found", "stderr_lines": ["/bin/sh: 1: ta: not found"], "stdout": "", "stdout_lines": []} ...ignoring TASK [Test Interactive Bash Using /bin/bash -ci] **************************************************************************************************************************************** changed: [127.0.0.1] TASK [debug] **************************************************************************************************************************************************************************** ok: [127.0.0.1] => { "msg": { "changed": true, "cmd": "/bin/bash -ic 'ta'", "delta": "0:00:00.414534", "end": "2018-10-31 10:11:40.189365", "failed": false, "rc": 0, "start": "2018-10-31 10:11:39.774831", "stderr": "", "stderr_lines": [], "stdout": "this is test for ansible interactive shell", "stdout_lines": [ "this is test for ansible interactive shell" ] } } TASK [Test Interactive Bash Using sudo -ui] ********************************************************************************************************************************************* [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "sudo -ui hearen ta", "delta": "0:00:00.007906", "end": "2018-10-31 10:11:40.306128", "failed": true, "msg": "non-zero return code", "rc": 1, "start": "2018-10-31 10:11:40.298222", "stderr": "sudo: unknown user: i\nsudo: unable to initialize policy plugin", "stderr_lines": ["sudo: unknown user: i", "sudo: unable to initialize policy plugin"], "stdout": "", "stdout_lines": []} ...ignoring TASK [Test Interactive Bash Using ssh -tt localhost /bin/bash -ci] ********************************************************************************************************************** hearen@localhost password: changed: [127.0.0.1] PLAY RECAP ****************************************************************************************************************************************************************************** 127.0.0.1 : ok=8 changed=6 unreachable=0 failed=0
There are two work options:
shell: /bin/bash -ic 'ta'shell: ssh -tt localhost/bin/bash -ci 'ta' but this requires a password locally.