一. 简述:
关于inventory的基本用法可以参考上一篇文章:ansible-inventory定义-优快云博客
在实际线上环境中,单纯的靠配置文件管理,是一件很麻烦的事情(比如一致性问题),特别是规模较大的场景下,会有大量主机/节点列表(如本公司项目分组60多个,主机2500多台),涉及到日常的增加/回收/维修等情况,如果手动维护相关列表将会是一个非常繁琐的工作。ansible默认是基于静态的文件来获取主机列表的,但同时还支持script方法,即:通过脚本从其他资源(如cmdb系统)获取后按照特有格式定义好组及主机,然后输出,相当于变相的实现动态功能。
二. 实现方法:
ansible实现script方法,需要将inventory值定义为script的名字,脚本不限制语言。但需要支持两个参数:
1. -l(--list) 显示所有主机及主机组信息(json格式)
2. -H(--host) 参数后面需要指定一个host,返回主机的信息(认证,主机变量等) ,同样json格式。
这里通过zabbix api 获取了相关主机/分组列表的信息(其他环境中均可参考)作为例子,具体代码如下:
#!/usr/bin/python
import json
import argparse
import api_authcheck
def data_req(): #获取主机列表并json格式化
hosts = {}
method='hostgroup.get'
params={

最低0.47元/天 解锁文章
2606

被折叠的 条评论
为什么被折叠?



