# How to define with\_items by variables in ansible 1.4?

**URL:** <https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070>\
**Category:** Ansible Project\
**Created:** [December 5, 2013, 7:47am UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070 "2013-12-05T07:47:49Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![rella.guo](https://avatars.discourse-cdn.com/v4/letter/r/d2c977/32.png) [@rella.guo](https://forum.ansible.com/u/rella.guo)\
**Post date:** [December 5, 2013, 7:47am UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/1 "2013-12-05T07:47:49Z")

</div>

In ansible 1.0, I can use $foo in with\_items. For example,

with\_items:

- $404\_error\_page
- $503\_error\_page
- $403\_error\_page

Ansible 1.0 works well. It can find the variable and replace the value.

In Ansible 1.4, I try to use {{ foo }} or “{{ foo }}”, but both are wrong.

Case1, Syntax Error.

with\_items:

- {{ 404\_error\_page }}
- {{ 503\_error\_page }}
- {{ 403\_error\_page }}

Case2, ansible would not find the variable.

with\_items:

- “{{ 404\_error\_page }}”
- “{{ 503\_error\_page }}”
- “{{ 403\_error\_page }}”

Who knows how to define with\_items by variables in ansible 1.4?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 5, 2013, 1:18pm UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/2 "2013-12-05T13:18:26Z")

</div>

with\_items:

- bar
- baz

Is all you need now

– Michael

---

<div class="post-metadata">

**Author:** ![rella.guo](https://avatars.discourse-cdn.com/v4/letter/r/d2c977/32.png) [@rella.guo](https://forum.ansible.com/u/rella.guo)\
**Post date:** [December 6, 2013, 7:21am UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/3 "2013-12-06T07:21:51Z")

</div>

I tried, but it is failed.

My task is:

- name: Transfer custom error pages and restart httpd service  
action: copy src={{ local\_custom\_error\_pages\_loc }}/{{ item }} dest={{ custom\_error\_page\_dir }}/{{ item }} owner=root group=root mode=0644  
with\_items:
- 404\_error\_page
- 503\_error\_page
- 403\_error\_page  
Note: 404\_error\_page, 503\_error\_page and 403\_error\_page are variable names which are defined in vars.yml.

404\_error\_page: 404\_ErrorPage.html  
503\_error\_page: MaintenancePage.html  
403\_error\_page: 403\_ErrorPage.html

The error message is:

failed: [192.168.126.143] =\> (item=404\_error\_page) =\> {“failed”: true, “item”: “404\_error\_page”}  
msg: could not find src=/home/agilairedev/playbooks/jboss\_deploy\_harden/repositories/custom\_error\_pages/ **404\_error\_page**  
failed: [192.168.126.143] =\> (item=503\_error\_page) =\> {“failed”: true, “item”: “503\_error\_page”}  
msg: could not find src=/home/agilairedev/playbooks/jboss\_deploy\_harden/repositories/custom\_error\_pages/503\_error\_page  
failed: [192.168.126.143] =\> (item=403\_error\_page) =\> {“failed”: true, “item”: “403\_error\_page”}  
msg: could not find src=/home/agilairedev/playbooks/jboss\_deploy\_harden/repositories/custom\_error\_pages/403\_error\_page

FATAL: all hosts have already failed – aborting

We can see, variable 404\_error\_page is not replaced with its value, 404\_ErrorPage.html.  
If I use $foo, it works well.

with\_items:

- $404\_error\_page
- $503\_error\_page
- $403\_error\_page

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 6, 2013, 12:53pm UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/4 "2013-12-06T12:53:49Z")

</div>

Hmm, it sounds like you want to use the names of the variables, and the system is trying to evaluate them for you.

You can solve this by renaming the variables.

---

<div class="post-metadata">

**Author:** ![rella.guo](https://avatars.discourse-cdn.com/v4/letter/r/d2c977/32.png) [@rella.guo](https://forum.ansible.com/u/rella.guo)\
**Post date:** [December 9, 2013, 5:47am UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/5 "2013-12-09T05:47:59Z")

</div>

**I changed the variable name from 404\_error\_page to error\_404\_page which starts with letter. But it cannot resolve the issue.**

**I wrote:**  
with\_items:

- error\_404\_page

**The error still occur.**

failed: [192.168.126.143] =\> (item=error\_404\_page) =\> {“failed”: true, “item”: “error\_404\_page”}  
msg: could not find src=/home/dev/playbooks/harden/repositories/custom\_error\_pages/error\_404\_page

**We can see that the system didn’t take it as a variable.**

**If I write:**

with\_items:

- {{ error\_404\_page }}

Syntax Error

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 9, 2013, 1:55pm UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/6 "2013-12-09T13:55:11Z")

</div>

- “{{ error\_404\_page }}”

If that’s the name of your variable.

Hopefully, you will note Ansible gave you a longer syntax error message that told you exactly what to do about quoting, read the rest of the output 🙂

---

<div class="post-metadata">

**Author:** ![rella.guo](https://avatars.discourse-cdn.com/v4/letter/r/d2c977/32.png) [@rella.guo](https://forum.ansible.com/u/rella.guo)\
**Post date:** [December 10, 2013, 3:00am UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/7 "2013-12-10T03:00:59Z")

</div>

Thank you. Quoting resolves the issue. But I want to say, indeed, the rest of the output didn’t tell me what to do. 🙂  
The whole output is:

ERROR: Syntax Error while loading YAML script, /home/dev/playbooks/harden/install.yml  
Note: The error may actually appear before this position: line 39, column 8

with\_items:

- {{ error\_404\_page }}

I know some Syntax Error messages describe exactly what to do about quoting. But “with\_items” does not. 🙂

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [December 10, 2013, 4:30pm UTC](https://forum.ansible.com/t/how-to-define-with-items-by-variables-in-ansible-1-4/14070/8 "2013-12-10T16:30:37Z")

</div>

I’ll file a ticket to add this to the suggester code, thanks!
