# Ansible output jinja2 loop to a different files

**URL:** <https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264>\
**Category:** Get Help\
**Tags:** loop, playbook, jinja2\
**Created:** [April 29, 2025, 6:29pm UTC](https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264 "2025-04-29T18:29:13Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shiraz\_Kamal](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/shiraz_kamal/32/7485_2.png) [@Shiraz\_Kamal](https://forum.ansible.com/u/Shiraz_Kamal)\
**Post date:** [April 29, 2025, 6:29pm UTC](https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264/1 "2025-04-29T18:29:13Z")

</div>

I have the following in my vars file.

```auto
aux: "SHR"
cluster_nodes:
- { node_name: sudora123a, node_num: 1, inst_num: "123A" }
- { node_name: sudora123b, node_num: 2, inst_num: "123B" }

```

I am trying to loop through each node\_name and write out to different files.

My template:

```auto
  (SID_LIST =
                (SID_NAME = {{ aux }}{{ cn.inst_num }})
        )
  )

```

I would like to have 2 different files created to have outputs like this.  
file1.out

```auto
  (SID_LIST =
                (SID_NAME =SHR123A)
        )
  )

```

file2.out

```auto
  (SID_LIST =
                (SID_NAME =SHR123B)
        )
  )

```

---

<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:** [April 29, 2025, 8:23pm UTC](https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264/2 "2025-04-29T20:23:49Z")

</div>

See if this helps. (In a real case you’d use `ansible.builtin.template`, but this example uses `ansible.builtin.copy` with `content:` to keep it all together.)

```yaml
---
# Shiraz_Kamal_01.yml
- name: Looping over cluster nodes
  hosts: localhost
  gather_facts: false
  vars:
    aux: "SHR"
    cluster_nodes:
      - { node_name: "sudora123a", node_num: 1, inst_num: "123A" }
      - { node_name: "sudora123b", node_num: 2, inst_num: "123B" }
  tasks:
    - name: I am trying to loop through each node_name and write out to different files.
      ansible.builtin.copy:
        dest: 'file{{ cn.node_num }}.out'
        mode: '0644'
        content: |
          # file{{ cn.node_num }}.out
          (SID_LIST =
                        (SID_NAME = {{ aux }}{{ cn.inst_num }})
                )
          )
      loop: '{{ cluster_nodes }}'
      loop_control:
        loop_var: cn

```

The output looks like this:

```txt
$ cat file1.out file2.out
# file1.out
(SID_LIST =
              (SID_NAME = SHR123A)
      )
)
# file2.out
(SID_LIST =
              (SID_NAME = SHR123B)
      )
)

```

---

<div class="post-metadata">

**Author:** ![Shiraz\_Kamal](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/shiraz_kamal/32/7485_2.png) [@Shiraz\_Kamal](https://forum.ansible.com/u/Shiraz_Kamal)\
**Post date:** [April 30, 2025, 11:28am UTC](https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264/3 "2025-04-30T11:28:10Z")

</div>

@utoddl thank you so much! that works!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [May 30, 2025, 11:28am UTC](https://forum.ansible.com/t/ansible-output-jinja2-loop-to-a-different-files/42264/4 "2025-05-30T11:28:23Z")

</div>

Closed on May 30, 2025, 11:28am UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
