<p>The task which fails is:</p>

<pre><code>- name: copy demo app source
  copy: src=demo/app/ dest=/var/www/demo mode=0755
  notify: restart apache2
</code></pre>

<p>If you have a look at your folder structure and more specifically the <code>demo_app</code> role, you have:</p>

<pre><code>│   ├── demo_app
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   └── app
│   │   │       ├── demo.py
│   │   │       └── requirements.txt
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── demo.wsgi.j2
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
</code></pre>

<p>The <code>copy</code> task will look for the <code>src</code> in <code>demo_app/files/</code>. So, either change your task to:</p>

<pre><code>- name: copy demo app source
  copy: src=app dest=/var/www/demo mode=0755
  notify: restart apache2
</code></pre>

<p>Or create a <code>demo</code> directory in <code>demo_app/files/</code> and place the <code>app</code> directory in it (like <code>demo_app/files/demo/app/</code>).</p>

<p>Setting an absolute path to the directory in the task will also work, but don't think it's an elegant solution.</p>

CC BY-SA 3.0
2017-03-31T06:23:54.867Z
2017-03-31T06:37:43.913Z
2017-03-31T06:37:43.913Z
13dimitar
<p>I have a webserver playbook containing the following:</p>

<pre><code>- hosts: webserver
  become: true
  roles:
    - apache2
    - { role: demo_app, db_user: demo, db_pass: demo, db_name: demo }
</code></pre>

<p>My folder structure is </p>

<pre><code>.
├── ansible
│   ├── ansible
│   ├── ansible.cfg
│   ├── ansible.pub
│   ├── dev
│   ├── docker-compose.yml
│   ├── Docker.zip
│   ├── env
│   │   ├── ansible
│   │   ├── ansible.pub
│   │   ├── Dockerfile
│   │   ├── init-fake.conf
│   │   ├── ssh_config
│   │   └── ssh_host_config
│   ├── playbooks
│   │   ├── database.yml
│   │   ├── hostname.yml
│   │   └── loadbalancer.yml
│   ├── startup.sh
│   └── temp
│       ├── ansible
│       ├── ansible.cfg
│       ├── ansible.pub
│       ├── dev
│       ├── docker-compose.yml
│       └── Docker.zip
├── ansible.cfg
├── ansible.pub
├── control.yml
├── database.yml
├── demo
│   └── demo.conf
├── dev
├── docker-compose.yml
├── Docker.zip
├── env
│   ├── ansible
│   ├── ansible.pub
│   ├── Dockerfile
│   ├── init-fake.conf
│   ├── ssh_config
│   └── ssh_host_config
├── loadbalancer.yml
├── main.yml
├── playbooks
│   ├── hostname.yml
│   ├── stack_restart.yml
│   └── stack_status.yml
├── roles
│   ├── apache2
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── control
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── demo_app
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   └── app
│   │   │       ├── demo.py
│   │   │       └── requirements.txt
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── demo.wsgi.j2
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── mysql
│   │   ├── defaults
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   └── nginx
│       ├── defaults
│       ├── files
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── README.md
│       ├── tasks
│       ├── templates
│       │   └── nginx.conf.j2
│       ├── tests
│       │   ├── inventory
│       │   └── test.yml
│       └── vars
│           └── main.yml
├── site.yml
├── startup.sh
├── templates
├── webserver.retry
└── webserver.yml
</code></pre>

<p><strong>Ansible version is 2.2.1</strong>. I'm getting the following error when trying to run ansible-playbook webserver.yml</p>

<pre><code>TASK [demo_app : copy demo app source] *****************************************
fatal: [app01]: FAILED! =&gt; {"changed": false, "failed": true, "msg": "Unable to find 'demo/app/' in expected paths."}
fatal: [app02]: FAILED! =&gt; {"changed": false, "failed": true, "msg": "Unable to find 'demo/app/' in expected paths."}
    to retry, use: --limit @/work/webserver.retry

PLAY RECAP *********************************************************************
app01                      : ok=6    changed=0    unreachable=0    failed=1   
app02                      : ok=6    changed=0    unreachable=0    failed=1   
</code></pre>

<p>The relevant task is:</p>

<pre><code>- name: copy demo app source
  copy: src=demo/app/ dest=/var/www/demo mode=0755
  notify: restart apache2
</code></pre>

<p>I've tried altering the above copy src to <code>/demo_app</code> and also <code>src=demo_app/files/app</code> but this didnt help.</p>

<ansible>
Ansible expected paths error
codecowboy
# Ansible expected paths error

(Asked by: username_0 on 2017-03-31)

I have a webserver playbook containing the following:
- hosts: webserver
  become: true
  roles:
    - apache2
    - { role: demo_app, db_user: demo, db_pass: demo, db_name: demo }

My folder structure is 
.
├── ansible
│   ├── ansible
│   ├── ansible.cfg
│   ├── ansible.pub
│   ├── dev
│   ├── docker-compose.yml
│   ├── Docker.zip
│   ├── env
│   │   ├── ansible
│   │   ├── ansible.pub
│   │   ├── Dockerfile
│   │   ├── init-fake.conf
│   │   ├── ssh_config
│   │   └── ssh_host_config
│   ├── playbooks
│   │   ├── database.yml
│   │   ├── hostname.yml
│   │   └── loadbalancer.yml
│   ├── startup.sh
│   └── temp
│       ├── ansible
│       ├── ansible.cfg
│       ├── ansible.pub
│       ├── dev
│       ├── docker-compose.yml
│       └── Docker.zip
├── ansible.cfg
├── ansible.pub
├── control.yml
├── database.yml
├── demo
│   └── demo.conf
├── dev
├── docker-compose.yml
├── Docker.zip
├── env
│   ├── ansible
│   ├── ansible.pub
│   ├── Dockerfile
│   ├── init-fake.conf
│   ├── ssh_config
│   └── ssh_host_config
├── loadbalancer.yml
├── main.yml
├── playbooks
│   ├── hostname.yml
│   ├── stack_restart.yml
│   └── stack_status.yml
├── roles
│   ├── apache2
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── control
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── demo_app
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   └── app
│   │   │       ├── demo.py
│   │   │       └── requirements.txt
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── demo.wsgi.j2
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   ├── mysql
│   │   ├── defaults
│   │   ├── files
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   ├── templates
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml
│   └── nginx
│       ├── defaults
│       ├── files
│       ├── handlers
│       │   └── main.yml
│       ├── meta
│       │   └── main.yml
│       ├── README.md
│       ├── tasks
│       ├── templates
│       │   └── nginx.conf.j2
│       ├── tests
│       │   ├── inventory
│       │   └── test.yml
│       └── vars
│           └── main.yml
├── site.yml
├── startup.sh
├── templates
├── webserver.retry
└── webserver.yml

Ansible version is 2.2.1. I'm getting the following error when trying to run ansible-playbook webserver.yml
TASK [demo_app : copy demo app source] *****************************************
fatal: [app01]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to find 'demo/app/' in expected paths."}
fatal: [app02]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to find 'demo/app/' in expected paths."}
    to retry, use: --limit @/work/webserver.retry

PLAY RECAP *********************************************************************
app01                      : ok=6    changed=0    unreachable=0    failed=1   
app02                      : ok=6    changed=0    unreachable=0    failed=1   

The relevant task is:
- name: copy demo app source
  copy: src=demo/app/ dest=/var/www/demo mode=0755
  notify: restart apache2

I've tried altering the above copy src to /demo_app and also src=demo_app/files/app but this didnt help.

**Tags:** ansible


---

## 1 answers

### Answer by username_1 on 2017-03-31. Score: 7 | Accepted answer

The task which fails is:
- name: copy demo app source
  copy: src=demo/app/ dest=/var/www/demo mode=0755
  notify: restart apache2

If you have a look at your folder structure and more specifically the demo_app role, you have:
│   ├── demo_app
│   │   ├── defaults
│   │   │   └── main.yml
│   │   ├── files
│   │   │   └── app
│   │   │       ├── demo.py
│   │   │       └── requirements.txt
│   │   ├── handlers
│   │   │   └── main.yml
│   │   ├── meta
│   │   │   └── main.yml
│   │   ├── README.md
│   │   ├── tasks
│   │   │   └── main.yml
│   │   ├── templates
│   │   │   └── demo.wsgi.j2
│   │   ├── tests
│   │   │   ├── inventory
│   │   │   └── test.yml
│   │   └── vars
│   │       └── main.yml

The copy task will look for the src in demo_app/files/. So, either change your task to:
- name: copy demo app source
  copy: src=app dest=/var/www/demo mode=0755
  notify: restart apache2

Or create a demo directory in demo_app/files/ and place the app directory in it (like demo_app/files/demo/app/).
Setting an absolute path to the directory in the task will also work, but don't think it's an elegant solution.


---

