注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

Ansible第七篇:动态Inventory

Ansible 彭东稳 1921次浏览 已收录 0个评论

Ansible Inventory实际上是包含静态Inventory和动态Inventory两部分,静态Inventory指的是在文件/etc/ansible/hosts中指定的主机和组,动态Inventory指通过外部脚本获取主机列表,并按照ansible所要求的格式返回给ansilbe命令的。这部分一般会结合CMDB资管系统、zabbix监控系统、crobble安装系统、云计算平台等获取主机信息。由于主机资源一般会动态的进行增减,而这些系统一般会智能更新。我们可以通过这些工具提供的API或者接入库查询等方式返回主机列表。

比如为了结合资产管理系统(CMDB),所以要使用到动态获取inventory的方法,这样可以省去配置ansible服务端的hosts,所有的客户端IP,帐号,密码,端口都可以从CMDB中获取到。

怎么写一个自己的数据源?

很简单!我们仅仅需要写一个在适当参数下,能够返回正确JSON格式数据的脚本或者程序,你可以使用任何语言来实现。

注意,动态inventory脚本必须支持如下两个命令行参数(新本版ansible好像有其中一个就行):

--host:(用来列出主机的详细信息)

--list:(用来列出群组)

脚本如下:

注:

1、主机部分必须是列表格式的;

2、hostdata行,其中的”hosts” 部分可以省略,但如果使用时,必须是”hosts” ,不能是其他如‘‘hostlist’’ 等字符串。

执行结果如下:

测试ansible(脚本需要可执行权限,可别忘了,chmod a+x inventory.py):

下面提供一个支持all、group、host的脚本,可以自己进行修改:

有其他需求或者高级用法,自己参考下面两篇文档即可:

http://www.linuxyw.com/749.html

http://www.ansible.com.cn/docs/developing_inventory.html#inventory-script-tuning


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)or分享 (0)
关于作者:

您必须 登录 才能发表评论!