# Ansible playbook not working trying to run make & configure with complex switches

**URL:** <https://forum.ansible.com/t/ansible-playbook-not-working-trying-to-run-make-configure-with-complex-switches/14521>\
**Category:** Ansible Project\
**Created:** [February 7, 2014, 7:18pm UTC](https://forum.ansible.com/t/ansible-playbook-not-working-trying-to-run-make-configure-with-complex-switches/14521 "2014-02-07T19:18:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Duncan\_Lock](https://avatars.discourse-cdn.com/v4/letter/d/dfb087/32.png) [@Duncan\_Lock](https://forum.ansible.com/u/Duncan_Lock)\
**Post date:** [February 7, 2014, 7:18pm UTC](https://forum.ansible.com/t/ansible-playbook-not-working-trying-to-run-make-configure-with-complex-switches/14521/1 "2014-02-07T19:18:41Z")

</div>

I’m trying to use Ansible to provision a Vagrant VM. The VM is running CentOS 6.4. I’m using the following (abbreviated) ansible playbook:

- hosts: default

vars:  
home: ‘/home/vagrant’  
curl\_version: ‘7\_19\_7’  
curl\_url: ‘[https://github.com/bagder/curl/archive/curl-](https://github.com/bagder/curl/archive/curl-){{ curl\_version }}.tar.gz’  
curl\_dir: ‘{{ home }}/curl-curl-{{ curl\_version }}’

# user: vagrant

remote\_user: vagrant  
sudo: yes

tasks:

- name: Ensure required packages and installed and up to date - pt1  
yum: pkg={{ item }} state=present  
with\_items:
- make
- gcc
- etc…

# Lots more yum tasks in here

- name: Ensure CURL source downloaded  
get\_url: url={{ curl\_url }} dest=/home/vagrant/curl-{{ curl\_version }}.tar

- name: Extract CURL source  
command: tar -zxf {{ home }}/curl-{{ curl\_version }}.tar creates={{ curl\_dir }}

- name: Copy ssh patch over  
copy: src=./files/ssh.c.patch dest={{ home }}/ssh.c.patch

- name: Patch CURL with openssl  
shell: patch -t {{ curl\_dir }}/lib/ssh.c {{ home }}/ssh.c.patch chdir={{ curl\_dir }}/lib  
when: path\_file\_result.changed

- name: Build CURL with openssl  
command: ‘chdir={{ curl\_dir }} “{{ item }}”’  
with\_items:

- ./buildconf

- ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss

- make

- make install

- ldconfig

Vagrant is working fine and the Ansible playbook runs successfully up to the last task ‘Build CURL with openssl’ - which fails, like so:

TASK: [Build CURL with openssl] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
changed: [default] =\> (item=./buildconf) =\> {“changed”: true, “cmd”: [“./buildconf”], “delta”: “0:00:10.709817”, “end”: “2014-02-07 02:26:44.802652”, “item”: “./buildconf”, “rc”: 0, “start”: “2014-02-07 02:26:34.092835”, “stderr”: “configure.ac:78: installing `./compile' configure.ac:73: installing `./config.guess’  
configure.ac:73: installing `./config.sub' configure.ac:65: installing `./missing’  
Makefile.am: installing `./depcomp' configure.ac:137: installing `./config.guess’  
configure.ac:137: installing `./config.sub' docs/examples/Makefile.am: installing `./depcomp’”, “stdout”: “buildconf: autoconf version 2.63 (ok)  
buildconf: autom4te version 2.63 (ok)  
buildconf: autoheader version 2.63 (ok)  
buildconf: automake version 1.11.1 (ok)  
buildconf: aclocal version 1.11.1 (ok)  
buildconf: libtool version 2.2.6 (ok)  
buildconf: libtoolize found  
buildconf: GNU m4 version 1.4.13 (ok)  
buildconf: running libtoolize  
buildconf: running aclocal  
buildconf: running aclocal hack to convert all mv to mv -f  
buildconf: running autoheader  
buildconf: cp lib/curl\_config.h.in src/curl\_config.h.in  
buildconf: running autoconf  
buildconf: running in ares  
buildconf: running automake  
buildconf: OK”}

failed: [default] =\> (item=./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss) =\> {“cmd”: [“./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss”], “failed”: true, “item”: “./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss”, “rc”: 2}  
msg: [Errno 2] No such file or directory  
failed: [default] =\> (item=make) =\> {“changed”: true, “cmd”: [“make”], “delta”: “0:00:00.001828”, “end”: “2014-02-07 02:26:45.003968”, “item”: “make”, “rc”: 2, “start”: “2014-02-07 02:26:45.002140”}  
stderr: make: \*\*\* No targets specified and no makefile found. Stop.  
failed: [default] =\> (item=make install) =\> {“cmd”: [“make install”], “failed”: true, “item”: “make install”, “rc”: 2}  
msg: [Errno 2] No such file or directory  
changed: [default] =\> (item=ldconfig) =\> {“changed”: true, “cmd”: [“ldconfig”], “delta”: “0:00:00.009685”, “end”: “2014-02-07 02:26:46.096829”, “item”: “ldconfig”, “rc”: 0, “start”: “2014-02-07 02:26:46.087144”, “stderr”: “”, “stdout”: “”}

FATAL: all hosts have already failed – aborting

So, the `./buildconf` step works, but the `./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss` step seems to be failing with `[Errno 2] No such file or directory`. I presume this is because it’s trying to run that whole string like it was a single command?

If I change it to use `shell` instead of `command`, I get this instead:

failed: [default] =\> (item=./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss) =\> {“changed”: true, “cmd”: " "./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss" ", “delta”: “0:00:00.001171”, “end”: “2014-02-07 02:31:34.862373”, “item”: “./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss”, “rc”: 127, “start”: “2014-02-07 02:31:34.861202”}  
stderr: /bin/sh: ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss: No such file or directory

I’ve verified that all the tasks up to that point work, and the files are downloaded and extracted to the expected places and the patch works (see here: [http://serverfault.com/questions/573505/ansible-playbook-not-working-trying-to-run-patch](http://serverfault.com/questions/573505/ansible-playbook-not-working-trying-to-run-patch)).

After the task fails (or if you comment it out), if you SSH into the VM that’s being configured, and run all the same build steps yourself - using the exact values from the playbook, it works.

I’m still pretty new to Ansible and I’m not sure why this isn’t working? What am I doing wrong? Is there some way to format or quote that `configure` command differently so it gets interpreted properly, if that’s the issue? Should I be using `raw` for this? Or something else?

Thanks!

---

<div class="post-metadata">

**Author:** ![Walid](https://avatars.discourse-cdn.com/v4/letter/w/ea5d25/32.png) [@Walid](https://forum.ansible.com/u/Walid)\
**Post date:** [February 7, 2014, 8:22pm UTC](https://forum.ansible.com/t/ansible-playbook-not-working-trying-to-run-make-configure-with-complex-switches/14521/2 "2014-02-07T20:22:48Z")

</div>

Duncan,

you seem to be doing it right setting dir first, however still it looks like you are not in the right path for the file/dir it is trying to look for may be if you use the shell module and set your cwd first, then the configure line

shell : "cd {{ curl\_dir }};{{ item }}’

---

<div class="post-metadata">

**Author:** ![Duncan\_Lock](https://avatars.discourse-cdn.com/v4/letter/d/dfb087/32.png) [@Duncan\_Lock](https://forum.ansible.com/u/Duncan_Lock)\
**Post date:** [February 7, 2014, 9:03pm UTC](https://forum.ansible.com/t/ansible-playbook-not-working-trying-to-run-make-configure-with-complex-switches/14521/3 "2014-02-07T21:03:20Z")

</div>

THANK YOU!

That fixes it 🙂

So, this doesn’t work:[Errno 2] No such file or directory :

- name: Build CURL with openssl  
**shell: ‘chdir={{ curl\_dir }} “{{ item }}”’**  
with\_items:
- ./buildconf
- ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss
- make
- make install
- ldconfig

but this works perfectly:

- name: Build CURL with openssl  
**shell: ‘cd {{ curl\_dir }};{{ item }}’**  
with\_items:
- ./buildconf
- ./configure --with-gssapi --with-libidn --with-libssh2 --prefix=/usr --without-nss
- make
- make install
- ldconfig

anyone know why?
