Ansible Jinja2模板将字符串拆分为Key - value对



下面是我在Jinja2和Ansible中的字符串值

studId=ValueA,studName=valueB;studId=ValueC,studName=ValueD

我可以把它改成dictionary,这样我就可以使用下面的jinja2模板了

student id=item.studId
student name= item.studName

期望输出

student id=ValueA
student name= ValueB
student id=ValueC
student name= ValueD

给定字符串

s1: studId=ValueA,studName=valueB;studId=ValueC,studName=ValueD

统一分隔符,例如

- set_fact:
s2: "{{ s1|regex_replace('[,;]', ';') }}"

s2: studId=ValueA;studName=valueB;studId=ValueC;studName=ValueD

拆分条目,迭代2个条目,并创建字典列表,例如

- set_fact:
l1: "{{ l1|d([]) + [dict(item|map('split', '='))] }}"
loop: "{{ s2.split(';')|batch(2) }}"

给出了数据

的预期结构
l1:
- studId: ValueA
studName: valueB
- studId: ValueC
studName: ValueD

模板

- debug:
msg: |
{% for item in l1 %}
student id={{ item.studId }}
student name={{ item.studName }}
{% endfor %}

给出预期结果

msg: |-
student id=ValueA
student name=valueB
student id=ValueC
student name=ValueD