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

如何将Ansible INI格式清单转换为JSON或YAML格式?

嘿,这个问题太常见了!刚上手Ansible的朋友大多从INI格式清单开始,但AWX要求用YAML/JSON,其实完全不用手动转换,Ansible自带的ansible-inventory工具就能搞定一切,简单得很。

转成JSON格式

假设你的INI清单文件叫inventory.ini,直接跑这条命令就能生成标准JSON清单:

ansible-inventory -i inventory.ini --export --list > inventory.json
  • -i 指定你的INI清单路径
  • --export 是关键参数,它会去掉Ansible内部的元数据,只保留清单的核心内容,这样导入AWX时更干净
  • --list 以JSON格式输出清单结构,重定向到inventory.json文件里

转成YAML格式

如果是Ansible 2.11及以上版本,直接用--yaml参数就能一步生成YAML:

ansible-inventory -i inventory.ini --export --yaml > inventory.yaml

要是你用的是旧版Ansible(低于2.11)没有--yaml参数,也可以先转成JSON再用Python转成YAML(Python的yaml模块一般随Ansible安装自带):

ansible-inventory -i inventory.ini --export --list | python -c 'import json, yaml; print(yaml.dump(json.loads(input()), default_flow_style=False))' > inventory.yaml

举个实际例子

比如你有这样的INI清单:

[webservers]
web1.example.com
web2.example.com ansible_user=admin ansible_port=2222

[dbservers]
db1.example.com ansible_host=192.168.1.100

[all:vars]
ansible_python_interpreter=/usr/bin/python3

转成YAML后会是这样的结构(完全符合AWX的要求):

all:
  children:
    dbservers:
      hosts:
        db1.example.com:
          ansible_host: 192.168.1.100
    webservers:
      hosts:
        web1.example.com: {}
        web2.example.com:
          ansible_port: 2222
          ansible_user: admin
  vars:
    ansible_python_interpreter: /usr/bin/python3

这样生成的文件直接就能导入AWX了,根本不用手动改格式,省超多事!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:12:36