Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

My playbook is as below:

- hosts : mygroup
  user : user
  sudo : yes
  tasks :
  - name : Copy script
    copy : 'src=/home/user/Scripts/ dest=/opt/root2/ owner=root group=root mode=755'
  - name : Execute script
    command : '/usr/bin/python /opt/root2/'

The file upload is working, But execution is failing. Even though I am able to execute the script without any issues directly on the server. Am I doing anything wrong?

share|improve this question
Can you edit your question to include the full command run and its output? – EEAA Sep 6 '13 at 20:50
you can make a custom module fairly easily. – Skylar Saveland Oct 28 '13 at 21:03

I have used a similar playbook which works as expected:

# playbook.yml
- hosts: ${target}
  sudo: yes

  - name: Copy file
    copy: src=../files/ dest=/opt/ owner=howardsandford group=admin mode=755

  - name: Execute script
    command: /opt/



# write to a file
f = open('/tmp/test_from_python','w')
f.write('hi there\n')

Running the playboook:

ansible-playbook playbook.yml --extra-vars "target=the_host_to_run_script_on"


PLAY [the_host_to_run_script_on] ***************************************************************

GATHERING FACTS ***************************************************************
ok: [the_host_to_run_script_on]

TASK: [Copy file] *************************************************************
changed: [the_host_to_run_script_on]

TASK: [Execute script] ********************************************************
changed: [the_host_to_run_script_on]

PLAY RECAP ********************************************************************
the_host_to_run_script_on  : ok=3    changed=2    unreachable=0    failed=0

And on the remote host:

$ cat /tmp/test_from_python
hi there

Several differences between our setup:

  • I don't have single quotes around the copy and command parameters
  • The shebang sets the python interpreter rather than specifying /usr/bin/python from the command line
  • I set the owner of the script to my own username and primary group that is in sudoers, rather than root

Hopefully this can point you in the right direction of where the differences might be.

share|improve this answer
In ansible 1.9.4 - hosts: ${target} doesn't work in playbook, i have to change it with - hosts: '{{target}}'. its mentioned in documentation. – Adeel Ahmad Nov 30 '15 at 13:07

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.