动态 inventory 的核心是调用云平台 api 获取实时服务器列表并由 ansible 解析为标准 json 清单;需安装 python 3.6+、对应云厂商 sdk 及 ansible 2.9+,配置访问凭证,编写可执行 json 输出脚本,设置执行权限,并通过 ansible -i 或 ansible.cfg 指定使用。

直接调用云平台 API 获取实时服务器列表,再让 Ansible 解析成标准 JSON 格式清单,是动态 Inventory 的核心逻辑。不需要手动维护 hosts 文件,也不依赖静态 IP 或固定命名。
准备基础环境
确保控制节点已安装:
- Python 3.6+ 和 boto3(AWS)、aliyun-python-sdk-ecs(阿里云)或对应云厂商 SDK
- Ansible 2.9+
- 云平台访问凭证:如 AWS 的 ~/.aws/credentials,或通过环境变量 AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY 设置
编写可执行的动态脚本
以 AWS EC2 为例,脚本需满足三点:能被系统执行、输出合法 JSON、结构符合 Ansible 要求(含 _meta 和分组字段)。例如:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 保存为 aws_ec2.py,首行加
#!/usr/bin/env python3 - 用 boto3.resource('ec2') 或 client.describe_instances() 拉取运行中实例
- 提取 public_ip_address 或 private_ip_address 作为主机标识
- 按标签(如
tag:Env=prod)自动归入不同主机组,如"env_prod": {"hosts": ["192.0.2.1"]} - 每个主机在
_meta.hostvars中定义连接参数:"ansible_user"、"ansible_ssh_host"等
配置 Ansible 使用该脚本
无需改全局配置,两种方式任选其一即可生效:
- 执行时指定:
ansible -i aws_ec2.py all -m ping - 写入 ansible.cfg:
[defaults]<br>inventory = ./aws_ec2.py
注意:脚本必须有执行权限 —— chmod +x aws_ec2.py,否则 Ansible 会报 “permission denied”。
验证与调试技巧
动态清单是否有效,可通过以下方式快速确认:
- 直接运行脚本看输出:
./aws_ec2.py --list(多数官方脚本支持该参数) - 检查 JSON 格式是否合法:
./aws_ec2.py --list | python3 -m json.tool - 用
ansible-inventory -i aws_ec2.py --graph查看分组树形结构 - 若连不通,先确认目标主机 SSH 端口开放、密钥已分发、
ansible_user对应用户存在且有权限
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










