You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ansible的vars_prompt或AWX survey获取数据创建JSON文件

实现方案

你现有vars_prompt配置无需修改,直接在playbook中追加变量组装、文件生成的任务即可,该方案同时兼容AWX survey变量传入场景,不需要做逻辑适配。

完整可运行Playbook示例

---
- name: Playbook for creating a .JSON file
  hosts: localhost
  gather_facts: no
  vars_prompt: 
  - name: fruitName
    prompt: Please enter Fruit Name
    default: "Apple"
    private: no
  - name: fruitSize
    prompt: Please enter required fruit size
    default: "Large"
    private: no
  - name: fruitColour
    prompt: Please provide fruit colour
    default: "Red"
    private: no

  tasks:
    - name: 构造JSON对应的数据字典
      ansible.builtin.set_fact:
        output_config:
          fruitName: "{{ fruitName }}"
          fruitSize: "{{ fruitSize }}"
          fruitColour: "{{ fruitColour }}"

    - name: 写入格式化JSON文件
      ansible.builtin.copy:
        content: "{{ output_config | to_nice_json }}"
        dest: /path/to/your/target/file.json # 替换为实际要存放JSON的路径
        mode: '0644'

关键说明

  • to_nice_json是Ansible内置过滤器,会自动将字典序列化为带缩进换行的标准可读JSON,和你要求的输出格式完全匹配;如果需要生成无多余空格的压缩版JSON,替换为to_json过滤器即可。
  • AWX使用场景下,可以直接删除vars_prompt段落,只要在job template的survey中配置三个同名变量fruitName、fruitSize、fruitColour,后续生成JSON的任务逻辑完全不需要改动,会自动读取survey传入的值生成文件。
  • 如果需要在远程被控节点上生成JSON文件,将hosts修改为目标主机组即可,文件会直接写入对应被控节点的指定路径。
  • 禁止手动拼接JSON字符串,这种方式遇到特殊字符时很容易出现转义错误、格式非法问题,用内置过滤器做序列化是最稳定的实现方式。

执行后生成的JSON文件内容完全符合预期:

{
    "fruitName": "Apple",
    "fruitSize": "Large",
    "fruitColour": "Red"
}

内容的提问来源于stack exchange,提问作者Aditya Siddarth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:09:20