When I encountered a related problem, I wound up having Jinja run execute Salt modules.
In my case, it was cmd.run
to run mktmp
(and, at the end of the template, rm
for cleanup), with file.append
and file.grep
, though in your case, you might be able to use Salt's load_yaml
extension to Jinja.
So, something like this (rough, untested):
{% set tmpfile = salt['cmd.run']('mktmp') -%}{% salt['file.append']('my_key: ' ~ your_key) -%}{% set my_key = load_yaml(tmpfile)['my_key'] -%}{% salt['file.remove'](tmpfile) %}
This certainly isn't the best place to put data, but it demonstrated using calling into Salt modules from Jinja to store data. I don't know of any existing Salt modules suitable for storing ephemeral data that only lives as long as the templates compile. I'll check back later and see what other solutions might work.