# A general question about looping

**URL:** <https://forum.ansible.com/t/a-general-question-about-looping/36102>\
**Category:** Ansible Project\
**Created:** [December 10, 2021, 9:05pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102 "2021-12-10T21:05:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mike\_Eggleston](https://avatars.discourse-cdn.com/v4/letter/m/58956e/32.png) [@Mike\_Eggleston](https://forum.ansible.com/u/Mike_Eggleston)\
**Post date:** [December 10, 2021, 9:05pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/1 "2021-12-10T21:05:11Z")

</div>

I know I can do this from a shell script. I wonder if I can do this in pure Ansible.  
I was thinking about clusters recently. I know I can use the VM module to spin up a VM.  
If I wanted 1,000 nodes, how would I loop inside Ansible for the nodes?  
Using the shell I would do something like (not tested):

for i in `seq 000 999`  
do  
&nbsp;&nbsp;ansible-playbook -e nodename=“beofulfnode$i” create-a-node.yml  
done

How to do this looping in pure Ansible?

Mike

---

<div class="post-metadata">

**Author:** ![Jorge\_Rua1](https://avatars.discourse-cdn.com/v4/letter/j/a87d85/32.png) [@Jorge\_Rua1](https://forum.ansible.com/u/Jorge_Rua1)\
**Post date:** [December 10, 2021, 9:28pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/2 "2021-12-10T21:28:56Z")

</div>

Have a look to with\_sequence

---

<div class="post-metadata">

**Author:** ![utoddl](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/utoddl/32/249_2.png) [@utoddl](https://forum.ansible.com/u/utoddl)\
**Post date:** [December 10, 2021, 9:55pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/3 "2021-12-10T21:55:17Z")

</div>

It’s something close to this, but “create-a-node.yml” isn’t a playbook in this case, but rather just a task file.

- name: loop over beofulf nodes  
include\_tasks: create-a-node.yml  
with\_sequence: start=000 end=999  
vars:  
nodename: “beofulfnode{{ item }}”

---

<div class="post-metadata">

**Author:** ![Dick\_Visser](https://avatars.discourse-cdn.com/v4/letter/d/d9b06d/32.png) [@Dick\_Visser](https://forum.ansible.com/u/Dick_Visser)\
**Post date:** [December 11, 2021, 8:22am UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/4 "2021-12-11T08:22:44Z")

</div>

Apparently the recommendation these days is to use the range filter:

[https://docs.ansible.com/ansible/latest/user\_guide/playbooks\_loops.html#with-sequence](https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#with-sequence)

---

<div class="post-metadata">

**Author:** ![utoddl](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/utoddl/32/249_2.png) [@utoddl](https://forum.ansible.com/u/utoddl)\
**Post date:** [December 13, 2021, 1:11pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/5 "2021-12-13T13:11:22Z")

</div>

```auto
<b> - name: loop over beofulf nodes
    include_tasks: create-a-node.yml
    loop: "{{ range(0, 1000) | list }}"
    vars:
      nodename: "{{ 'beofulfnode%03d' | format(item) }}"</b>

```

​

---

<div class="post-metadata">

**Author:** ![Mike\_Eggleston](https://avatars.discourse-cdn.com/v4/letter/m/58956e/32.png) [@Mike\_Eggleston](https://forum.ansible.com/u/Mike_Eggleston)\
**Post date:** [December 13, 2021, 2:11pm UTC](https://forum.ansible.com/t/a-general-question-about-looping/36102/6 "2021-12-13T14:11:28Z")

</div>

Thank you to everyone. 🙂

Mike
