ansible - Ansible:将字典转换为名称=值字符串
问题描述
给定一个字典,如:
- set_fact:
VARS: {foo: bar, baz: biz}
我怎样才能把它变成一串name=value
对,换行分隔,最好使用过滤器,比如"{{ VARS | format(???) | join('\n') }}"
?
所需的结果是以下带有换行符的字符串:
foo=bar
baz=biz
我知道我可以map()
用来转换键或值,但不能同时转换两者。
解决方案
这个问题和下面的很相似:Create a string using Jinja2 template
您可能会采用与那里提供的解决方案类似的解决方案。以下将为您提供带有换行符的所需字符串:
"{{ 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" ]
推荐阅读
- windows - 如何在 PowerShell 的子文件夹中点源函数
- css - 如果标签元素中有锚元素,复选框不起作用
- python - 函数参数:ab 未定义
- r - 如何打印所选两个滑块范围之间的所有值,而不仅仅是这两个值?
- java - 关于“INSERT INTO... VALUES”,错误信息:VALUES 子句必须包含至少一个元素
- r - 循环遍历数据框列表以在 R 中创建图形
- rust - 如何制作具有特征的泛型泛型?
- jquery - addClass 作为元素中的第一个而不是最后一个
- excel - Excel:如何计算符合一个条件的日期之间的时间
- php - Google App Engine, 2 Services, dispatch.yaml: nginx-app.conf 似乎不再考虑