The full traceback is:
Traceback (most recent call last):
File “/Users/dick.visser/foo/venv/lib/python3.11/site-packages/ansible/template/init.py”, line 1160, in do_template
res = j2_concat(rf)
^^^^^^^^^^^^^
File “”, line 764, in root
TypeError: ‘NoneType’ object is not iterable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/Users/dick.visser/foo/venv/lib/python3.11/site-packages/ansible/plugins/action/template.py”, line 150, in run
resultant = templar.do_template(template_data, preserve_trailing_newlines=True, escape_backslashes=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/Users/dick.visser/foo/venv/lib/python3.11/site-packages/ansible/template/init.py”, line 1171, in do_template
raise AnsibleError(“Unexpected templating type error occurred on (%s): %s” % (to_native(data), to_native(te)))
ansible.errors.AnsibleError: Unexpected templating type error occurred on (
I guessed that “line 764” would be the location in the template, but at that place nothing seems relevant…
Line 764 in root is referencing the python code that jinja ultimately generates to run. So there isn’t really an easy way to map that back to the template itself.
I have a tool that can ingest a jinja template, and print out that python code. It’s possible you might be able to visually understand what the python code is doing, and trace that back to a line in your jinja template. You can find it at:
thx, but that failed on missing filters.
In any case, I stripped out al for loops and found the problem.
The deployer had commented out list items, but did not leave any.
So:
foobar:
bar
baz
bor
was in the config as:
foobar:
- bar
- baz
- bor
which meant it wasn’t a list anymore, but null instead, and thus None in python…