Ansible configure and compile in directory So I have have an Ansible Task that extracts a programs sourcecode zip into a certain directory and is then supposed to compile and install it.
The extraction of the zip works fine, but then I need to execute the commands:

./configure
make
sudo make install


And these commands need to be execute from within the extracted directory. I tried several things to execute it, I couldnt get it to work.

  - name: doit
    command: chdir=/tmp/proftpd/ ./configure &amp;&amp; make &amp;&amp; make install
    become: yes


I tried this but it fails:

  TASK [doit] ********************************************************************
fatal: [centos]: FAILED! =&gt; {"changed": true, "cmd": ["./configure", "&amp;&amp;", "make", "&amp;&amp;", "make", "install"], "delta": "0:00:00.152824", "end": "2019-11-21 14:20:48.656070", "msg": "non-zero return code", "rc": 1, "start": "2019-11-21 14:20:48.503246", "stderr": "configure: WARNING: you should use --build, --host, --target\nconfigure: WARNING: invalid host type: &amp;&amp;\nconfigure: WARNING: you should use --build, --host, --target\nconfigure: WARNING: you should use --build, --host, --target\nconfigure: WARNING: invalid host type: &amp;&amp;\nconfigure: WARNING: you should use --build, --host, --target\nconfigure: WARNING: you should use --build, --host, --target\nInvalid configuration `&amp;&amp;': machine `&amp;&amp;' not recognized\nconfigure: error: /bin/sh .//config.sub &amp;&amp; failed", "stderr_lines": ["configure: WARNING: you should use --build, --host, --target", "configure: WARNING: invalid host type: &amp;&amp;", "configure: WARNING: you should use --build, --host, --target", "configure: WARNING: you should use --build, --host, --target", "configure: WARNING: invalid host type: &amp;&amp;", "configure: WARNING: you should use --build, --host, --target", "configure: WARNING: you should use --build, --host, --target", "Invalid configuration `&amp;&amp;': machine `&amp;&amp;' not recognized", "configure: error: /bin/sh .//config.sub &amp;&amp; failed"], "stdout": "checking build system type... ", "stdout_lines": ["checking build system type... "]}


How can I achieve this properly with ansible?
Ansible command module requires only one command and cannot be changed. You should use the shell module at the very least. Note however that this will break the idempotency of the playbook.

You should probably split the task up into three:


configure task using the shell module. Use creates: to tell the task to be skipped if the configure task has already created the expected output file
make task, using the Ansible Make module
similarly for the make install task.


This should yield the same actual result, but would be more likely to be idempotent.