给像这样的字典
- set_fact:
VARS: {foo: bar, baz: biz}
如何将其转换为以行换行分隔的name=value
对字符串,最好使用过滤器,例如"{{ VARS | format(???) | join('\n') }}"
?
所需的结果是带有换行符的以下字符串:
foo=bar
baz=biz
我知道我可以使用map()
来转换键或值,但不能一次转换两者。
答案 0 :(得分:0)
此问题与以下内容非常相似:Create a string using Jinja2 template
您可能会采用与the one provided there类似的解决方案。下面将为您提供所需的带换行符的字符串:
"{{ VARS | to_json | regex_replace('\\:\\ ','=') | regex_replace('[\\[\\]{}\\\"]') | regex_replace('\\,\\ ','\\n') }}"
这应该给你一个像这样的字符串:
foo=bar
baz=biz
我不确定您打算将此输出用于什么,但是,例如,如果您打算在Ansible中的其他地方循环使用,将字符串拆分为字符串列表可能比使用字符串更有用。换行符。这可以通过使用以下替代方法完成:
{{ (VARS | to_json | regex_replace('\\:\\ ','=') | regex_replace('[\\[\\]{}\\\"]')).split(", ") }}
这将返回如下列表:
[ "foo=bar", "baz=biz" ]