# ansible 2 lists in playbook vars file

**URL:** <https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935>\
**Category:** Ansible Project\
**Created:** [July 8, 2017, 9:52pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935 "2017-07-08T21:52:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Anfield](https://avatars.discourse-cdn.com/v4/letter/a/dec6dc/32.png) [@Anfield](https://forum.ansible.com/u/Anfield)\
**Post date:** [July 8, 2017, 9:52pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935/1 "2017-07-08T21:52:45Z")

</div>

Trying to get a playbook working with yml file containing 2 lists and passing that into the main file to loop over.

Can someone help with letting me know what I’m doing wrong? Thanks

copylist.yml

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [July 8, 2017, 9:58pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935/2 "2017-07-08T21:58:59Z")

</div>

> Trying to get a playbook working with yml file containing 2 lists and  
> passing that into the main file to loop over.
> 
> Can someone help with letting me know what I'm doing wrong? Thanks  
> &nbsp;&nbsp;copylist.yml  
> ---  
> copylist:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- /home/ansible/tom/tom.txt  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- /home/ansible/fred/fred.txt  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- /home/ansible/tom1  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- /home/ansible/fred1

This is not a list its a dictionary.

> Playbook - copy.yml  
> ---  
> - hosts: localhost  
> &nbsp;&nbsp;&nbsp;become: yes  
> &nbsp;&nbsp;&nbsp;vars:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;users:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- tom  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- fred  
> &nbsp;&nbsp;&nbsp;vars\_files:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- copylist.yml  
> &nbsp;&nbsp;&nbsp;tasks:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: Create users from vars  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: "{{item}}"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state: present  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with\_items: "{{users}}"
> 
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: Copy files into target directories  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src: "{{item.src}}"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: "{{item.dest}}"  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with\_items: "{{copylist}}"

Since copylist is not a list but a dictionary this fails.

You need to write copylist as list you like this and you task will work.

copylist:  
&nbsp;&nbsp;&nbsp;- src: /home/ansible/tom/tom.txt  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: /home/ansible/tom1  
&nbsp;&nbsp;&nbsp;- src: /home/ansible/fred/fred.txt  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: /home/ansible/fred1

---

<div class="post-metadata">

**Author:** ![Anfield](https://avatars.discourse-cdn.com/v4/letter/a/dec6dc/32.png) [@Anfield](https://forum.ansible.com/u/Anfield)\
**Post date:** [July 8, 2017, 10:09pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935/3 "2017-07-08T22:09:43Z")

</div>

Hi,

Thanks for the reponse. This works but I dont quite understand it…

So copylist is now basically a list with two listed values

- src
- src

How does it pick up dest when its not really designated as a list item with a dash (-)?  
I wouldve expected -dest to be listed aswell twice

---

<div class="post-metadata">

**Author:** ![Mauricio\_Tavares](https://avatars.discourse-cdn.com/v4/letter/m/b5e925/32.png) [@Mauricio\_Tavares](https://forum.ansible.com/u/Mauricio_Tavares)\
**Post date:** [July 8, 2017, 10:23pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935/4 "2017-07-08T22:23:51Z")

</div>

> Hi,
> 
> Thanks for the reponse. This works but I dont quite understand it...
> 
> So copylist is now basically a list with two listed values  
> &nbsp;&nbsp;&nbsp;- src  
> &nbsp;&nbsp;&nbsp;- src
> 
> How does it pick up dest when its not really designated as a list item with  
> a dash (-)?  
> I wouldve expected -dest to be listed aswell twice

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does this give you ideas?

# In vars file/entry  
normal\_users:  
&nbsp;&nbsp;- moe : { uid : "1205", groups : "{{web\_groups}},wheel" }  
&nbsp;&nbsp;- larry : { uid : "1203", groups : "{{web\_groups}}" }  
&nbsp;&nbsp;- curly : { uid : "1207", groups : "{{web\_groups}}" }

# In task file  
- name: List all Normal Users  
&nbsp;&nbsp;debug: msg="Users {{ normal\_users }} "

- name: List Normal Users one at a time  
&nbsp;&nbsp;debug: msg="Users {{ item }} "  
&nbsp;&nbsp;with\_items: "{{ normal\_users }} "

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [July 8, 2017, 10:25pm UTC](https://forum.ansible.com/t/ansible-2-lists-in-playbook-vars-file/24935/5 "2017-07-08T22:25:44Z")

</div>

The dash indicate start of a list item.  
And item contains a dictionary, this has two element src and dest.

You can write a list of dictionary in two ways

copylist:  
&nbsp;&nbsp;&nbsp;- src: /home/ansible/tom/tom.txt  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: /home/ansible/tom1  
&nbsp;&nbsp;&nbsp;- src: /home/ansible/fred/fred.txt  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dest: /home/ansible/fred1

or

copylist:  
&nbsp;&nbsp;&nbsp;- {'src':'/home/ansible/tom/tom.txt', 'dest':'/home/ansible/tom1'}  
&nbsp;&nbsp;&nbsp;- {'src':'/home/ansible/fred/fred.txt', 'dest':'/home/ansible/fred1'}

Which syntax used, come down to personal preferences.
