error with appending list in Ansible

I’m trying to append new tunnel interface to empty list, but i’m got below error. Can you please help me out here ?

tasks:
- name: empty list
set_fact:
list_tunnel: []

- name: create new list for tunnel
set_fact:
list_tunnel_new: “{{ list_tunnel + [‘tunnel.{{item}}’] }}”
loop: “{{ range(1,10)|list}}”

error:

fatal: [SJL]: FAILED! => {“msg”: “The task includes an option with an undefined variable. The error was: ‘item’ is undefined\n\nThe error appears to be in ‘/etc/ansible/aws/interface_palo_facts.yaml’: line 34, column 12, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: print facts\n ^ here\n”}

thank you…!!

You can do this –

- set_fact:
list_tunnel: "{{ result }}"
vars:
prefix: tunnel
a_list: "{{ range(1, 10) | list }}"
result: "{{ [prefix] | product(a_list) | map('join', '.') | list }}"

- debug:
msg: "{{ list_tunnel }}"

or

- name: create new list for tunnel
set_fact:
list_tunnel: "{{ list_tunnel | default([]) + ['tunnel.' + item | string] }}"
loop: "{{ range(1,10) | list}}"

- debug:
msg: "{{ list_tunnel }}"

hi @abhijeet,

thanks for sharing a solution… first solution works like a champ…2nd is only giving last element…

I get correct output with 2nd solution as well

TASK [debug] **********************************************************************************
ok: [localhost] => {
“msg”: [
“tunnel.1”,
“tunnel.2”,
“tunnel.3”,
“tunnel.4”,
“tunnel.5”,
“tunnel.6”,
“tunnel.7”,
“tunnel.8”,
“tunnel.9”
]
}