@runevn
A bit more from my 'troubleshooting notes'  I gathered back when I was prototyping a lot of very complex configurations and worked with Chad Smith:
Test user-data rendering:      cloud-init query --format "$(sudo cloud-init query userdata)"
Test jinja template rendering: cloud-init query --format="$( cat test.cfg )"  # test.cfg would be the test cloud-config.cfg file to render
Test jinja template detailed:  cloud-init devel render test.cfg -d
Query metadata:                cloud-init query -f {{v1.distro}}
========= Debug user-data rendering =============
cloud-init devel render /var/lib/cloud/instance/user-data.txt -d
Check actual seed file from provider
cloud-init devel render /var/lib/cloud/seed/nocloud-net/user-data -d
On a system where cloud-config wasn't honored, run: sudo cloud-init query --system  # or you can add --annotate which will annotate the specific lines where an error is in the #cloud-config YAML
per Chad Smith;
All cloud-init instance data           /var/lib/cloud/instance/
Userdata                               /var/lib/cloud/instance/user-data.txt
Datasource                             /var/lib/cloud/instance/datasource
metadata                               /run/cloud-init/instance-data.json
Seed files from provider/hypervisor:   /var/lib/cloud/seed/nocloud-net
For anyone doing a deep dive into troubleshooting cloud-init configuration rendering.