在Ansible中,可以使用template
模块和with_nested
循环来实现双循环写入JSON文件。下面是一个示例解决方法:
首先,创建一个包含要写入JSON文件的数据的Ansible变量。例如,我们将创建一个名为data
的变量,其中包含两个列表,每个列表包含两个字典:
data:
- name: John
age: 30
- name: Jane
age: 25
接下来,创建一个名为template.json.j2
的模板文件,其中包含JSON文件的结构和变量占位符:
{
"people": [
{% for item in data %}
{
"name": "{{ item.name }}",
"age": "{{ item.age }}"
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
然后,使用template
模块在Ansible Playbook中将模板文件渲染为目标JSON文件:
- name: Write JSON file
hosts: localhost
tasks:
- name: Render template
template:
src: template.json.j2
dest: output.json
运行上述Playbook后,将在当前工作目录下创建一个名为output.json
的文件,并包含以下内容:
{
"people": [
{
"name": "John",
"age": "30"
},
{
"name": "Jane",
"age": "25"
}
]
}
这样,就实现了在Ansible中双循环写入JSON文件的解决方法。