【发布时间】:2020-05-15 13:38:16
【问题描述】:
我尝试使用 jinja2 模板在 ansible 上设置一个变量。在我的剧本中,我有这个:
- set_fact:
restart: |
{% for host in groups['primary'] %}
{% if hostvars[host].arbiter_host == inventory_hostname_short %}
{{ restart | combine(hostvars[host].restart | dict2items | selectattr('key', 'regex', 'mongod_\d+$') | list | items2dict) }}
{% endif %}
{% endfor %}
- debug:
var: restart
结果是这个
ok: [my_host] => {
"restart": "{u'mongod_01': True}\n{u'mongod_02': True}\n"
}
这几乎没问题,但是数据以单个字符串的形式给出。我需要这样的字典:
ok: [my_host] => {
"restart": {
"mongod_01": true,
"mongod_02": true,
}
}
我几乎尝试了所有方法,但注意到成功了。如何从字符串转换为dict对象?
顺便说一句,当 dict 对象只包含一个项目但它失败了两个或更多时,它工作正常。
【问题讨论】: