Template module doesn't work with any kind of loop

90 views
Skip to first unread message

dutu.a...@gmail.com

unread,
Feb 28, 2023, 5:22:15 PM2/28/23
to Ansible Project
Hello,

I'm having a textbook task (taken straight out from the documentation examples) using template and with_filetree:

- name: axis pipeline
  template:
    src: "{{ item.src }}"
    dest: "{{ logstash_home  }}/{{ item.path | splitext | first }}"
  with_filetree: ../templates/logstash/pipelines/axis

I get this error:
AnsibleFilterError: dict2items requires a dictionary, got <class 'ansible.template.AnsibleUndefined'> instead.

I get the same error with with_fileglob.

I have also tried different types of loops, nothing works. Everything I've tried works fine with the copy module.

So what is so special about the template module? It should work similarly with copy in terms of copying files, iterating over filesystem paths etc.
I'm using ansible 2.9.

Adrian Sebastian Dutu

unread,
Feb 28, 2023, 5:46:39 PM2/28/23
to ansible...@googlegroups.com
Seems this is caused by the path in the src. You can't put anything there except the file name, and it will look in playbooks/templates/filename. If i try to put a path, it throws that error.
This behavior happens only with loops though.

Without loops, I can put a full or relative path in the src and it works.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/430f0b89-4f27-486f-90bc-e38332eb2042n%40googlegroups.com.

Todd Lewis

unread,
Mar 1, 2023, 8:52:14 AM3/1/23
to Ansible Project
Current docs for with_filetree show this example:

- name: Template files (explicitly skip directories in order to use the 'src' attribute)
  template:
    src: '{{ item.src }}'
    dest: /web/{{ item.path }}
    mode: '{{ item.mode }}'
  with_filetree: web/
  when: item.state == 'file'

I suspect it's the directories that are causing your problems.
Reply all
Reply to author
Forward
0 new messages