创建Json文件

时间:2020-06-11 20:55:59

标签: ansible

如何基于输入的键值对创建新的JSON文件?
输入键/值对可以是任意数量。

用户输入:

filename: myfile
json:
  key1: value1
  key2: value2

2 个答案:

答案 0 :(得分:2)

Ansible中有一个to_json Jinja过滤器可以帮您做到这一点。

在您的copy任务的document.getElementById('header').className =属性中使用它,您应该具有所需的输出。

给出剧本

content

回顾一下

- hosts: localhost
  gather_facts: no

  vars:
    filename: myfile
    json:
      key1: value1
      key2: value2

  tasks:
    - copy:
        content: "{{ json | to_json }}"
        dest: "{{ filename }}.json"

并生成文件 myfile.json ,其中包含

PLAY [localhost] ***************************************************************

TASK [copy] ********************************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

答案 1 :(得分:0)

任务

    - copy:
        content: "{{ {item: lookup('vars', item)}|to_nice_json }}"
        dest: "{{ filename }}.json"
      loop:
        - json

给予

shell> cat myfile.json 
{
    "json": {
        "key1": "value1",
        "key2": "value2"
    }
}

可以循环更多变量。例如,

  vars:
    filename: myfile
    json1:
      key1: value1
      key2: value2
    json2:
      key3: value3
      key4: value4

  tasks:
    - copy:
        content: |
          {% for item in my_vars %}
          {{ {item: lookup('vars', item)}|to_nice_json }}
          {% endfor %}
        dest: "{{ filename }}.json"
      vars:
        my_vars:
          - json1
          - json2

给予

shell> cat myfile.json 
{
    "json1": {
        "key1": "value1",
        "key2": "value2"
    }
}
{
    "json2": {
        "key3": "value3",
        "key4": "value4"
    }
}